"""Caesar Cipher Hacker
Demonstrates how to implement a program that hacks a caesar cipher.
Note:
https://www.nostarch.com/crackingcodes/ (BSD Licensed)
"""
[docs]def main():
message = 'guv6Jv6Jz!J6rp5r7Jzr66ntrM'
SYMBOLS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.'
# Loop through every possible key:
for key in range(len(SYMBOLS)):
# It is important to set translated to the blank string so that the
# previous iteration's value for translated is cleared:
translated = ''
# The rest of the program is almost the same as the Caesar program:
# Loop through each symbol in message:
for symbol in message:
if symbol in SYMBOLS:
symbolIndex = SYMBOLS.find(symbol)
translatedIndex = symbolIndex - key
# Handle the wraparound:
if translatedIndex < 0:
translatedIndex += len(SYMBOLS)
# Append the decrypted symbol:
translated += SYMBOLS[translatedIndex]
else:
# Append the symbol without encrypting/decrypting:
translated += symbol
# Display every possible decryption:
print('Key #%s: %s' % (key, translated))
if __name__ == '__main__':
main()