Mật mã với Python - Thuật toán ROT13

Cho đến bây giờ, bạn đã học về mật mã đảo ngược và thuật toán mật mã Caesar. Bây giờ, chúng ta hãy thảo luận về thuật toán ROT13 và việc triển khai nó.

Giải thích thuật toán ROT13

Mật mã ROT13 đề cập đến dạng viết tắt Rotate by 13 places. Đó là một trường hợp đặc biệt của Caesar Cipher trong đó sự thay đổi luôn là 13. Mỗi chữ cái được dịch chuyển bởi 13 vị trí để mã hóa hoặc giải mã thông điệp.

Thí dụ

Sơ đồ sau giải thích quy trình thuật toán ROT13 bằng hình ảnh:

Mã chương trình

Chương trình thực hiện thuật toán ROT13 như sau:

from string import maketrans

rot13trans = maketrans('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 
   'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm')

# Function to translate plain text
def rot13(text):
   return text.translate(rot13trans)
def main():
   txt = "ROT13 Algorithm"
   print rot13(txt)
	
if __name__ == "__main__":
   main()

Bạn có thể thấy đầu ra ROT13 như trong hình sau:

Hạn chế

Thuật toán ROT13 sử dụng 13 ca. Do đó, rất dễ dàng chuyển các ký tự theo cách ngược lại để giải mã văn bản mật mã.

Phân tích thuật toán ROT13

Thuật toán mật mã ROT13 được coi là trường hợp đặc biệt của Mật mã Caesar. Nó không phải là một thuật toán quá an toàn và có thể bị phá vỡ dễ dàng bằng phân tích tần số hoặc chỉ cần thử 25 khóa có thể có trong khi ROT13 có thể bị phá vỡ bằng cách dịch chuyển 13 vị trí. Do đó, nó không bao gồm bất kỳ mục đích sử dụng thực tế nào.