I'm trying to do a simple Caesar Cipher in Python. My encryption works, but my decryption function gives the error message that the string index is out of range. I've attached my code. I'm welcome to any comments.
import random
symbols = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!?@#$%^&*()' "
def encrypt_symbols(message, key):
encrypted = ''
index = 0
for letter in message:
index = symbols.find(letter) + key
if index > len(symbols):
index = index - (len(symbols) + 1)
encrypted = encrypted + symbols[index]
return encrypted
def decrypt(message, key):
decrypted = ''
index = 0
for letter in message:
index = symbols.find(letter) - key
if index < len(symbols):
index = index + len(symbols)
decrypted = decrypted + symbols[index]
return decrypted
test = "Wow! This works well, don't you think so?"
key = random.randrange(1, len(symbols))
secret_message = encrypt_symbols(test, key)
print(encrypt_symbols(test, key))
print(decrypt(secret_message, key))