3.暴力破解凯撒密码

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

# 凯撒密码暴力破解
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))

运行结果:
3.暴力破解凯撒密码_第1张图片

你可能感兴趣的:(#,密码学,#,Python,python,密码学,加密解密)