A classic:

'''Caesar_Cipher1.py
Caesar Cipher encryption/decryption
using Python's double-ended queue rotation
'''

import string
from collections import deque

def caesar_cipher(text, shift, decode=False):
    # change from encode to decode if decode=True
    if decode:
        shift = -shift
    alpha = string.ascii_uppercase + string.ascii_lowercase
    dq = deque(alpha)
    # shift/rotate the alphabet (dq in place)
    dq.rotate(shift)
    crypted = ""
    for c in text:
        if c in alpha:
            # get the letter's index in alpha and apply to dq
            index_alpha = alpha.index(c)
            crypted += dq[index_alpha]
        else:
            crypted += c
    return crypted


# testing ...
# shift key should be less than 26
shift = 11

# test, change letters not other characters
text = "The quick brown fox jumped over the lazy dogs ..123!"
print(text)

encoded = caesar_cipher(text, shift)

print(encoded)

print(caesar_cipher(encoded, shift, decode=True))

''' result ...
The quick brown fox jumped over the lazy dogs ..123!
IWT fjXRZ Qgdlc Udm YjbeTS dkTg iWT aPon SdVh ..123!
The quick brown fox jumped over the lazy dogs ..123!
'''
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.