沒有什麼可以阻止密碼破譯者猜測一個密鑰,然後用這個密鑰解密密文,檢視輸出,如果該密鑰不是正确的密鑰就繼續嘗試下一個密鑰。這種每一個可能的解密密鑰的技術叫暴力破解。
# 凱撒密碼暴力破解
message = input("message:")
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# 把每個可能的密鑰循環一遍
for key in range(len(LETTERS)):
# key代表密鑰
# translated設為空字元串
# 每次循環後清空.
translated = ''
# 密文裡的每一個字元按順序解密
for symbol in message:
if symbol in LETTERS:
num = LETTERS.find(symbol) # 在26個字母裡搜尋到密文字元的位置
num = num - key
# 檢查是否小于0,如果小于0,就加上26
if num < 0:
num = num + len(LETTERS)
# 把解密之後的字元追加到translated字元串的末尾
translated = translated + LETTERS[num]
else:
# 密文裡的symbol如果不在26個字母裡,就不進行解密,直接追加到字元串末尾
translated = translated + symbol
# 輸出解密采用的key和解密後的明文
print('Key #%s: %s' % (key, translated))
運作結果:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9E0T6FEVPNTWE5EM4wmYwhGWhxGZzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuQjMwUTMycTMyIjNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)