2021-csci-ga3205-midterm/index.py

45 lines
1.1 KiB
Python

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()