Mật mã với Python - Mật mã Caesar
Trong chương trước, chúng ta đã đề cập đến mật mã ngược. Chương này nói chi tiết về mật mã Caesar.
Thuật toán mật mã Caesar
Thuật toán của mật mã Caesar có các đặc điểm sau:
Kỹ thuật mật mã Caesar là phương pháp đơn giản và dễ dàng của kỹ thuật mã hóa.
Đây là loại mật mã thay thế đơn giản.
Mỗi chữ cái của văn bản thuần túy được thay thế bằng một chữ cái với một số vị trí cố định xuống bằng bảng chữ cái.
Sơ đồ sau mô tả hoạt động của việc triển khai thuật toán mật mã Caesar -
Chương trình thực hiện thuật toán mật mã Caesar như sau:
def encrypt(text,s):
result = ""
# transverse the plain text
for i in range(len(text)):
char = text[i]
# Encrypt uppercase characters in plain text
if (char.isupper()):
result += chr((ord(char) + s-65) % 26 + 65)
# Encrypt lowercase characters in plain text
else:
result += chr((ord(char) + s - 97) % 26 + 97)
return result
#check the above function
text = "CEASER CIPHER DEMO"
s = 4
print "Plain Text : " + text
print "Shift pattern : " + str(s)
print "Cipher: " + encrypt(text,s)
Đầu ra
Bạn có thể thấy mật mã Caesar, đó là đầu ra như thể hiện trong hình ảnh sau:
Giải trình
Ký tự văn bản thuần túy được duyệt từng ký tự một.
Đối với mỗi ký tự trong văn bản thuần túy đã cho, hãy biến đổi ký tự đã cho theo quy tắc tùy thuộc vào quy trình mã hóa và giải mã văn bản.
Sau khi các bước được thực hiện, một chuỗi mới được tạo ra được gọi là văn bản mật mã.
Hack thuật toán mật mã Caesar
Văn bản mật mã có thể bị tấn công với nhiều khả năng khác nhau. Một trong những khả năng đó làBrute Force Technique,liên quan đến việc thử mọi khóa giải mã có thể. Kỹ thuật này không đòi hỏi nhiều nỗ lực và tương đối đơn giản đối với một hacker.
Việc triển khai chương trình để hack thuật toán mật mã Caesar như sau:
message = 'GIEWIVrGMTLIVrHIQS' #encrypted message
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for key in range(len(LETTERS)):
translated = ''
for symbol in message:
if symbol in LETTERS:
num = LETTERS.find(symbol)
num = num - key
if num < 0:
num = num + len(LETTERS)
translated = translated + LETTERS[num]
else:
translated = translated + symbol
print('Hacking key #%s: %s' % (key, translated))
Hãy xem xét văn bản mật mã được mã hóa trong ví dụ trước. Sau đó, kết quả với các phương pháp hack có thể có bằng khóa và sử dụng kỹ thuật tấn công vũ phu như sau: