import argparse def caesar(ptextletter, keyletter): ptextNum = ord(ptextletter) - ord('A') keyletterNum = ord(keyletter) - ord('A') return chr((ptextNum + keyletterNum) % 26 + ord('A')) def caesar_reverse(ptextletter, keyletter): ptextNum = ord(ptextletter) - ord('A') keyletterNum = ord(keyletter) - ord('A') return chr((ptextNum - keyletterNum) % 26 + ord('A')) def encryption(plaintext, key): ciphertext = '' for i in range(len(plaintext)): ciphertext += caesar(plaintext[i], key[i % len(key)]) return ciphertext def decryption(ciphertext, key): plaintext = '' for i in range(len(ciphertext)): plaintext += caesar_reverse(ciphertext[i], key[i % len(key)]) return plaintext def main(): # parse command line argument parser = argparse.ArgumentParser() parser.add_argument('--text', type=str) parser.add_argument('--key', type=str) args = parser.parse_args() key = args.key user_text = args.text print("Encrypted ciphertext: " + encryption(user_text, key)) print("Decrypted plaintext: " + decryption(user_text, key)) if __name__ == '__main__': main()