diff --git a/vignere.py b/vignere.py new file mode 100755 index 0000000..481a767 --- /dev/null +++ b/vignere.py @@ -0,0 +1,68 @@ +#!/usr/bin/python3 +import sys, getopt, os + +def encrypt(string,key): + lowerstr=string.lower() + print("Encrypting "+lowerstr+" with key "+key) + strnums = [] + keynums = [] + resultnums = [] + resultstring = "" + for c in lowerstr: + strnums.append(ord(c)-97) + print(strnums) + for c in key: + keynums.append(ord(c)-97) + print(keynums) + keypointer=0 + for n in strnums: + resultnums.append((n+keynums[keypointer])%26) + keypointer = (keypointer+1) % (len(key)) + print(resultnums) + for c in resultnums: + resultstring = resultstring+chr(c+97) + print(resultstring) + +def decrypt(string,key): + lowerstr=string.lower() + print("Decrypting "+lowerstr+" with key "+key) + strnums = [] + keynums = [] + resultnums = [] + resultstring = "" + for c in lowerstr: + strnums.append(ord(c)-97) + print(strnums) + for c in key: + keynums.append(ord(c)-97) + print(keynums) + keypointer=0 + for n in strnums: + resultnums.append((n-keynums[keypointer])%26) + keypointer = (keypointer+1) % (len(key)) + print(resultnums) + for c in resultnums: + resultstring = resultstring+chr(c+97) + print(resultstring) + +def main(argv): + key = "" + try: + opts, args = getopt.getopt(argv,"hk:e:d:",["key=","encrypt=","decrypt="]) + except getopt.GetoptError: + print(os.path.basename(__file__)+' -k -e ') + print(os.path.basename(__file__)+' -k -d ') + sys.exit(2) + for opt, arg in opts: + if opt == '-h': + print(os.path.basename(__file__)+' -k -e ') + print(os.path.basename(__file__)+' -k -d ') + sys.exit() + elif opt in ("-k", "--key"): + key = arg + elif opt in ("-e", "--encrypt"): + encrypt(arg,key) + elif opt in ("-d", "--decrypt"): + decrypt(arg,key) +if __name__ == '__main__': + main(sys.argv[1:]) \ No newline at end of file