#!/usr/bin/env python ############################ # Author: Don C. Weber # Date: 08242008 # File: otp2.py # Description: One Time Pad Program # Usage: opt.py: [-h] -e|-d ############################ import getopt, sys # Set up alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] work = "" key = "" encrypted = "" plain2 = "" # Check what needs to be done if (len(sys.argv) > 1): if (sys.argv[1] == "-h"): print "opt.py: [-h] -e|-d " sys.exit() elif (len(sys.argv) != 5): print "opt.py: [-h] -e|-d " print "Num: " + str(sys.argv) sys.exit() else: workfile=open(sys.argv[2],'r') keyfile=open(sys.argv[3],'r') outfile=open(sys.argv[4],'w') for line in workfile.readlines(): work = work + line for line in keyfile.readlines(): key = key + line #print work #print key else: print "opt.py: [-h] -e|-d " sys.exit() # Clean input # Convert to upper case work = work.upper() key = key.upper() # Remove all except alpha characters # From In Text txtlen = (len(work) - 1) for i in range(0,txtlen): if work.isalpha(): break if not work[(txtlen - i)].isalpha(): work = work.replace(work[(txtlen - i)],'',1) print "Input: " + work # From Key Text txtlen = (len(key) - 1) for i in range(0,txtlen): if key.isalpha(): break if not key[(txtlen - i)].isalpha(): key = key.replace(key[(txtlen - i)],'',1) if (len(key) > len(work)): key = key[0:len(work)] elif (len(work) > len(key)): print "opt.py: Key must be longer or equal to that of the text to be worked." sys.exit() print "Key: " + key # Encrypt if (sys.argv[1] == "-e"): print "Encryting" for i in range(0,len(work)): encrypted = encrypted + alpha[(alpha.index(work[i]) + alpha.index(key[i]))% 26] print "Encrypted: " + encrypted if (len(sys.argv) > 1): outfile.write(encrypted) workfile.close keyfile.close outfile.close # Decrypt elif (sys.argv[1] == "-d"): print "Decrypting" for i in range(0,len(work)): #plain2 = plain2 + alpha[(alpha.index(work[i]) - alpha.index(key[i]))% 26] # Modified for LostboY's Logic plain2 = plain2 + alpha[((alpha.index(work[i]) - alpha.index(key[i]))% 26)-1] print "Decrypted: " + plain2 if (len(sys.argv) > 1): outfile.write(plain2) workfile.close keyfile.close outfile.close # Oh Hell else: print "Oh Hell" workfile.close keyfile.close outfile.close print "opt.py: [-h] -e|-d " sys.exit()