天天看點

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.暴力破解凱撒密碼