Python 密碼學 - 凱撒密碼
上一章我們討論了逆向密碼。本章將詳細介紹凱撒密碼。
凱撒密碼演算法
凱撒密碼演算法具有以下特點:
凱撒密碼是一種簡單易用的加密方法。
它是一種簡單的代換密碼。
明文中的每個字母都用字母表中固定位置下方的字母代替。
下圖描述了凱撒密碼演算法實現的工作原理:
凱撒密碼演算法的程式實現如下:
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)
輸出
您可以看到凱撒密碼的輸出,如下圖所示:
解釋
明文字元逐個遍歷。
對於給定的明文字元,根據文字加密和解密的過程,根據規則轉換給定的字元。
按照步驟後,生成一個新字串,稱為密文。
破解凱撒密碼演算法
密文可以透過多種可能性破解。其中一種可能性是暴力破解法,它涉及嘗試所有可能的解密金鑰。這種技術不需要太多努力,對於駭客來說相對簡單。
破解凱撒密碼演算法的程式實現如下:
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))
考慮前面示例中加密的密文。然後,使用金鑰和暴力破解技術,可能的破解方法的輸出如下:
廣告