การใช้อัลกอริทึม RSA โดยใช้ Python
บทความนี้อธิบายว่าอัลกอริทึม RSA คืออะไรในการเข้ารหัส และแสดงวิธีการใช้อัลกอริทึม RSA สำหรับการเข้ารหัสและถอดรหัสข้อมูลโดยใช้ Python ในที่นี้ ข้อมูลหมายถึงตัวเลข คุณยังสามารถใช้ข้อมูลสตริงสำหรับการเข้ารหัสและถอดรหัสโดยใช้อัลกอริทึมนี้
อัลกอริทึม RSA เป็นวิธีการเข้ารหัสและถอดรหัสข้อความที่ใช้กันอย่างแพร่หลาย ตั้งชื่อตามผู้สร้างRon Rivest , Adi ShamirและLeonard Adlemanผู้พัฒนาในปี1977 อัลกอริทึม RSA ขึ้นอยู่กับความยากในการแยกตัวประกอบจำนวนมาก และถือว่าเป็นวิธีที่ปลอดภัยสำหรับการเข้ารหัสข้อมูล
เพื่อทำความเข้าใจวิธีการทำงานของอัลกอริทึม RSA เราต้องเข้าใจแนวคิดของคีย์สาธารณะและคีย์ส่วนตัวก่อน ในอัลกอริทึม RSA ผู้ใช้แต่ละคนมีคีย์คู่หนึ่ง: คีย์สาธารณะและคีย์ส่วนตัว รหัสสาธารณะมีไว้สำหรับทุกคนที่ต้องการส่งข้อความถึงผู้ใช้ และใช้เพื่อเข้ารหัสข้อความ รหัสส่วนตัวถูกเก็บเป็นความลับและใช้เพื่อถอดรหัสข้อความ
นี่คือตัวอย่างวิธีการทำงานของอัลกอริทึม RSA:
- สมมติว่า Gwen ต้องการส่งข้อความถึง Peter เธอค้นหาคีย์สาธารณะของปีเตอร์และใช้เพื่อเข้ารหัสข้อความ
- ข้อความเข้ารหัสถูกส่งถึงปีเตอร์
- ปีเตอร์ใช้คีย์ส่วนตัวเพื่อถอดรหัสข้อความและอ่าน
นี่คือวิธีการทำงานอย่างละเอียด:
- อย่างแรก เกวนและปีเตอร์ตกลงเกี่ยวกับจำนวนเฉพาะที่มีค่ามากสองตัว คือ p และ q
- พวกเขาใช้จำนวนเฉพาะเหล่านี้ในการคำนวณจำนวนที่สาม n ซึ่งเป็นผลคูณของ p และ q หมายเลขนี้เปิดเผยต่อสาธารณะ
- พวกเขายังคำนวณจำนวนที่สี่ที่เรียกว่า "โทเชียน" ซึ่งเป็นจำนวนเต็มบวกที่น้อยกว่า n ที่เป็นโคไพรม์ของ n หมายเลขนี้ยังเปิดเผยต่อสาธารณะ
- เกวนและปีเตอร์ต่างสร้างกุญแจลับที่เรียกว่า “กุญแจส่วนตัว” คีย์นี้เป็นตัวเลขที่น้อยกว่า totient และเป็น coprime ของ totient
- จากนั้นพวกเขาใช้รหัสส่วนตัวเพื่อคำนวณรหัสสาธารณะซึ่งเป็นตัวเลขที่ค่อนข้างเฉพาะสำหรับ totient รหัสสาธารณะนี้มีไว้สำหรับทุกคนที่ต้องการส่งข้อความถึงผู้ใช้
อัลกอริทึม RSA มีข้อดีหลายประการ มันค่อนข้างง่ายในการติดตั้งและใช้กันอย่างแพร่หลายเพราะถือว่าเป็นวิธีการเข้ารหัสข้อมูลที่ปลอดภัย นอกจากนี้ อัลกอริทึม RSA ยังเป็นอัลกอริทึม "คีย์สาธารณะ" ซึ่งหมายความว่าคีย์ที่ใช้สำหรับการเข้ารหัสและถอดรหัสนั้นแตกต่างกัน สิ่งนี้ทำให้ผู้ใช้สามารถสื่อสารได้โดยไม่ต้องแลกเปลี่ยนรหัสลับ
โดยสรุป อัลกอริทึม RSA เป็นวิธีที่ใช้กันอย่างแพร่หลายในการเข้ารหัสและถอดรหัสข้อความ ขึ้นอยู่กับความยากในการแยกตัวประกอบจำนวนมาก และถือเป็นวิธีที่ปลอดภัยสำหรับการเข้ารหัสข้อมูล มีข้อดีหลายประการ รวมถึงความเรียบง่ายและการใช้คีย์สาธารณะและคีย์ส่วนตัว
อัลกอริทึม RSA ทั้งหมดในคำง่ายๆ
- เลือกp , q ( pและqทั้งจำนวนเฉพาะและpไม่เท่ากับq )
- คำนวณn = p * q
- คำนวณ totient, t = (p -1) * (q — 1)
- เลือกeโดยใช้gcd(t, e) = 1โดยที่1 < e < t
- คำนวณdโดยใช้(d * e % t = 1)
- ให้ ถือว่าeเป็นPublic Keyและdเป็นPrivate Key
- สำหรับการเข้ารหัสCipher Text = (Message ^ e) % n (โดยที่, Message < n)
- สำหรับการถอดรหัสข้อความ = (Cipher Text ^ d) % n
from math import gcd
# defining a function to perform RSA approch
def RSA(p: int, q: int, message: int):
# calculating n
n = p * q
# calculating totient, t
t = (p - 1) * (q - 1)
# selecting public key, e
for i in range(2, t):
if gcd(i, t) == 1:
e = i
break
# selecting private key, d
j = 0
while True:
if (j * e) % t == 1:
d = j
break
j += 1
# performing encryption
ct = (message ** e) % n
print(f"Encrypted message is {ct}")
# performing decryption
mes = (ct ** d) % n
print(f"Decrypted message is {mes}")
# Testcase - 1
RSA(p=53, q=59, message=89)
# Testcase - 2
RSA(p=3, q=7, message=12)
Encrypted message is 1394
Decrypted message is 89
Encrypted message is 3
Decrypted message is 12
หากคุณพบว่ามีประโยชน์ แบ่งปันสิ่งนี้กับเพื่อน ๆ ของคุณและอย่าลืมติดตาม
แล้วเจอกันใหม่บล็อกหน้า บ๊ายบาย





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)