itesc_kw44/vignere.py

68 lines
2.0 KiB
Python
Executable File

#!/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 <key> -e <plain text>')
print(os.path.basename(__file__)+' -k <key> -d <encrypted text>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print(os.path.basename(__file__)+' -k <key> -e <plain text>')
print(os.path.basename(__file__)+' -k <key> -d <encrypted text>')
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:])