การใช้อัลกอริทึม RSA โดยใช้ Python

Dec 09 2022
บทความนี้อธิบายว่าอัลกอริทึม RSA คืออะไรในการเข้ารหัส และแสดงวิธีการใช้อัลกอริทึม 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 ทั้งหมดในคำง่ายๆ

  1. เลือกp , q ( pและqทั้งจำนวนเฉพาะและpไม่เท่ากับq )
  2. คำนวณn = p * q
  3. คำนวณ totient, t = (p -1) * (q — 1)
  4. เลือกeโดยใช้gcd(t, e) = 1โดยที่1 < e < t
  5. คำนวณdโดยใช้(d * e % t = 1)
  6. ให้ ถือว่าeเป็นPublic Keyและdเป็นPrivate Key
  7. สำหรับการเข้ารหัสCipher Text = (Message ^ e) % n (โดยที่, Message < n)
  8. สำหรับการถอดรหัสข้อความ = (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

หากคุณพบว่ามีประโยชน์ แบ่งปันสิ่งนี้กับเพื่อน ๆ ของคุณและอย่าลืมติดตาม

แล้วเจอกันใหม่บล็อกหน้า บ๊ายบาย