Advertisement
Guest User

Tryout for Caesar Crypt (maybe a salad is better)

a guest
Jan 23rd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.33 KB | None | 0 0
  1. import argparse
  2. import sys
  3.  
  4. # Define main variables
  5. list1 = []
  6. list2 = []
  7. list3 = []
  8.  
  9.  
  10. def get_args():
  11.     parser = argparse.ArgumentParser(
  12.         description="""Caesar Encoder/Decoder""")
  13.     parser.add_argument(
  14.         '-a', '--action', type=str, choices=['encrypt', 'decrypt'], required=True)
  15.     parser.add_argument(
  16.         '-s', '--shift', type=int, help='Char. shift number', required=True)
  17.     parser.add_argument(
  18.         'input_string', nargs='+', help='string to encrypt/decrypt')
  19.     terminal_args = parser.parse_args()
  20.     return terminal_args
  21.  
  22. #TODO: limit args.shift range to 26
  23. def args_check():
  24.     args = get_args()
  25.     if args.input_string != "":
  26.         return args
  27.     else:
  28.         print(str("Incorrect arguments passed on"))
  29.         sys.exit()
  30.  
  31. def normalize_input(string):
  32.     string = string.upper()
  33.     return string
  34.  
  35. # Cypher function
  36. def cipher_this(string, cypher_shift):
  37.     string = normalize_input(string)
  38.     print(str("Input to encode is: ") + string)
  39.     # Generate list1 from unicode string
  40.     for letter in string:
  41.         list1.append((ord(letter)))
  42.  
  43.     # From list1, add cypher shift to the list
  44.     for element in list1:
  45.         list2.append(cypher_shift + element)
  46.  
  47.     # convert list2 onto coded string
  48.     for element in list2:
  49.         list3.append(str(chr(element)))
  50.         cyph_text = ''.join(list3)
  51.     print(str("Encoded output is : ") + cyph_text)
  52.  
  53. def decipher_this(string, cypher_shift):
  54.     string = normalize_input(string)
  55.     print(str("Input to decode is: ") + string)
  56.     # Generate list1 from unicode string
  57.     for letter in string:
  58.         list1.append((ord(letter)))
  59.  
  60.     # From list1, add cypher shift to the list
  61.     for element in list1:
  62.         list2.append(element - cypher_shift)
  63.  
  64.     # convert list2 onto coded string
  65.     for element in list2:
  66.         list3.append(str(chr(element)))
  67.         cyph_text = ''.join(list3)
  68.     print(str("Decoded output is : ") + cyph_text)
  69.  
  70.  
  71. def main():
  72.     print(str("Caesar Salad begin..."))
  73.     args = args_check()
  74.     string = str(args.input_string).strip("\'[]")
  75.     shift = int(args.shift)
  76.     action_to_do = str(args.action).strip("\'[]")
  77.     if action_to_do == "encrypt":
  78.         cipher_this(string, shift)
  79.     else:
  80.         decipher_this(string, shift)
  81.  
  82. if __name__ == "__main__":
  83.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement