没有什么可以阻止密码破译者猜测一个密钥,然后用这个密钥解密密文,查看输出,如果该密钥不是正确的密钥就继续尝试下一个密钥。这种每一个可能的解密密钥的技术叫暴力破解。
# 凯撒密码暴力破解
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))