Score:1

เสร็จสิ้นการเข้ารหัส RSA

ธง bl

เนื่องจากยังใหม่ต่อวิทยาการเข้ารหัสลับ ฉันจึงพยายามทำความเข้าใจว่าจะทำการเข้ารหัส RSA ด้วยตนเองอย่างไร ฉันสามารถทำตามสูตรได้จนถึงตอนนี้ก่อนที่จะสับสนมาก

ฉันต้องการเข้ารหัสค่า "123"

ก่อนอื่น ผมต้องเลือกจำนวนเฉพาะ 2 ตัว ฉันเลือก: $$p = 101\ คิว = 103$$

ต่อไป ฉันคำนวณ: $$n = p\cdot q = 10403$$.

หลังจากนั้นฉันคำนวณ: $$\varphi(n) = (p-1)\cdot(q-1) = 10200$$

ตอนนี้ ฉันต้องการเลือกเลขชี้กำลังสาธารณะ และฉันเลือก 3 สำหรับสิ่งนี้

ฉันเชื่อว่าสูตรที่จะใช้คือ: $$d = e^{â1}\bmod\varphi(n)$$

ฉันไม่เข้าใจวิธีเสียบสูตรนี้ และไม่รู้ว่าจะเข้ารหัส "123" โดยใช้สูตรนี้อย่างไร นอกจากนี้ ฉันไม่รู้ว่าจะหาเลขชี้กำลังการถอดรหัสได้อย่างไร

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก!

dave_thompson_085 avatar
cn flag
e (และ d ด้วย แต่คุณไม่ได้เลือก) ต้องเป็น co-prime ของ p-1 และ q-1 q-1 ของคุณคือ 102 และ 3 ไม่ใช่ co-prime ถึง 102 หากคุณต้องการความปลอดภัยที่แท้จริง ซึ่งเป็นไปไม่ได้กับของเล่นขนาดเล็กเช่นนี้ การเลือก p และ q ที่อยู่ติดกันหรือใกล้เคียงถือว่ามีข้อบกพร่อง d สามารถคำนวณเป็น e ผกผัน mod _either_ phi(n) (ออยเลอร์) _or_ lambda(n) (คาร์ไมเคิล) ทั้งหมดข้างต้นครอบคลุมโดย wikipedia และโดย Qs ที่มีอยู่มากมายมากมาย
fgrieu avatar
ng flag
ตามที่ระบุไว้ข้างต้น ตัวเลือก $e$ ของคุณไม่เข้ากันกับ $q$ ที่คุณเลือก สำหรับการคำนวณ $d$ โปรดดูที่ (half-)[extended Euclidean algorithm](https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm#Computing_multiplicative_inverses_in_modular_structures) หรือ [นี้](https://crypto.stackexchange.com /q/5889/555). การเข้ารหัส RSA แบบเรียนนั้นเป็นไปตาม $m\to c=m^e\bmod n$ การถอดรหัสเป็นไปตาม $c\to m=c^d\bmod n$ การคำนวณเหล่านี้คือ[การยกกำลังแบบโมดูลาร์](https://en.wikipedia.org/wiki/Modular_exponentiation)
jjj avatar
cn flag
jjj
ในทางปฏิบัติ p และ q ไม่ควรอยู่ใกล้กันเกินไป เพราะจะทำให้แยกตัวประกอบของ n ได้ง่าย (บอกเฉยๆ เพราะเลือก p กับ q ใกล้กัน)
Score:1
ธง in

Fgrieu ให้คำตอบเป็นหลักในความคิดเห็นฉันจะพยายามอธิบายรายละเอียดเล็กน้อยในรูปแบบคำตอบ

คุณสามารถใช้อัลกอริทึมแบบยุคลิดแบบขยายเพื่อค้นหา d จาก e แต่โปรดทราบว่า e ที่คุณเลือกจะไม่ทำงาน เพราะอีไม่ได้ร่วมเป็นนายกด้วย $\varphi(n)$ คุณต้องเลือกรายการอื่น เพื่อประสิทธิภาพ เรามักจะเลือก e ขนาดเล็กที่มีชุดบิตน้อย ซึ่งมักจะเป็นรูปแบบ $2^k+1$ เนื่องจาก 3 ไม่ทำงานคุณสามารถลองอื่น ๆ https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm นี่คือเครื่องคิดเลขออนไลน์: https://planetcalc.com/3298/

มันจะไม่เพียงให้ gcd แก่คุณ (ซึ่งจำเป็นต้องเป็น 1) แต่ยังให้ a,b แก่คุณด้วย: $a*e + b*\varphi(n) = 1$ ซึ่งโดยหลักแล้วหมายถึง $a*e = 1 สมัย \varphi(n)$ ซึ่งเป็นสิ่งที่เราต้องการ

จากนั้นคุณเข้ารหัสโดยการคำนวณ $c = m^e\space mod(n)$ และถอดรหัสโดยใช้ $m = c^d\space mod(n)$ ทั้งทำผ่าน https://en.wikipedia.org/wiki/Modular_exponentiation

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา