Triển khai thuật toán RSA bằng Python
Bài viết này giải thích thuật toán RSA thực sự là gì trong mật mã học và chỉ ra cách triển khai thuật toán RSA để mã hóa và giải mã dữ liệu bằng Python. Ở đây, dữ liệu đề cập đến các con số. Bạn cũng có thể sử dụng dữ liệu chuỗi để mã hóa và giải mã bằng thuật toán này.
Thuật toán RSA là một phương pháp được sử dụng rộng rãi để mã hóa và giải mã các thông điệp. Nó được đặt theo tên của những người tạo ra nó, Ron Rivest , Adi Shamir và Leonard Adleman , người đã phát triển nó vào năm 1977 . Thuật toán RSA dựa trên độ khó của việc phân tích số lượng lớn và nó được coi là một phương pháp an toàn để mã hóa dữ liệu.
Để hiểu cách thức hoạt động của thuật toán RSA, trước tiên chúng ta cần hiểu khái niệm về khóa chung và khóa riêng. Trong thuật toán RSA, mỗi người dùng có một cặp khóa: khóa chung và khóa riêng. Khóa chung được cung cấp cho bất kỳ ai muốn gửi tin nhắn cho người dùng và nó được sử dụng để mã hóa tin nhắn. Khóa riêng được giữ bí mật và được sử dụng để giải mã tin nhắn.
Đây là một ví dụ về cách hoạt động của thuật toán RSA:
- Giả sử Gwen muốn gửi tin nhắn cho Peter. Cô ấy tra cứu khóa công khai của Peter và sử dụng nó để mã hóa tin nhắn.
- Tin nhắn được mã hóa được gửi đến Peter.
- Peter sử dụng khóa riêng của mình để giải mã tin nhắn và đọc nó.
Đây là cách nó hoạt động chi tiết hơn:
- Đầu tiên, Gwen và Peter đồng ý về hai số nguyên tố lớn, p và q.
- Họ sử dụng các số nguyên tố này để tính số thứ ba, n, là tích của p và q. Con số này được công khai.
- Họ cũng tính toán một số thứ tư, được gọi là “totient”, là số các số nguyên dương nhỏ hơn n nguyên tố cùng nhau với n. Con số này cũng được công khai.
- Gwen và Peter mỗi người tạo một khóa bí mật, được gọi là “khóa riêng”. Khóa này là một số nhỏ hơn tổng số và nguyên tố cùng nhau với tổng số.
- Sau đó, họ sử dụng khóa riêng của mình để tính khóa chung, đây là một số tương đối nguyên tố với tổng thể. Khóa công khai này được cung cấp cho bất kỳ ai muốn gửi tin nhắn cho người dùng.
Thuật toán RSA có một số ưu điểm. Nó tương đối đơn giản để thực hiện và nó được sử dụng rộng rãi vì nó được coi là một phương pháp mã hóa dữ liệu an toàn. Ngoài ra, thuật toán RSA là thuật toán “khóa công khai”, có nghĩa là các khóa được sử dụng để mã hóa và giải mã là khác nhau. Điều này giúp người dùng có thể giao tiếp mà không cần phải trao đổi khóa bí mật.
Tóm lại, thuật toán RSA là một phương pháp được sử dụng rộng rãi để mã hóa và giải mã các thông điệp. Nó dựa trên sự khó khăn trong việc phân tích số lượng lớn và nó được coi là một phương pháp an toàn để mã hóa dữ liệu. Nó có một số ưu điểm, bao gồm tính đơn giản và việc sử dụng khóa công khai và khóa riêng.
Toàn bộ thuật toán RSA bằng những từ đơn giản,
- Chọn p , q ( p và q đều là số nguyên tố và p không bằng q )
- Tính n = p * q
- Tính tổng, t = (p -1) * (q — 1)
- Chọn e bằng cách sử dụng gcd(t, e) = 1 trong đó 1 < e < t
- Tính d bằng cách sử dụng (d * e % t = 1)
- Coi e là Khóa công khai và d là Khóa riêng.
- Để mã hóa, Văn bản mật mã = (Thông báo ^ e) % n (trong đó, Thông báo < n)
- Để giải mã, Message = (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
Nếu thấy hữu ích hãy chia sẻ cho bạn bè và đừng quên theo dõi nhé.
Hẹn gặp lại bạn trong một blog khác cho đến lúc đó bye

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































