|
|
|
|
@ -1,17 +1,20 @@
|
|
|
|
|
def encrypt(key, plaintext):
|
|
|
|
|
out=""
|
|
|
|
|
out = ""
|
|
|
|
|
for i in range(0, len(plaintext)):
|
|
|
|
|
out = out + chr(((ord(key[i%len(key)])+ord(plaintext[i])-(0x61+0x61))%26)+0x61)
|
|
|
|
|
out += chr(((ord(key[i % len(key)]) +
|
|
|
|
|
ord(plaintext[i]) - (2 * 0x61)) % 26)+0x61)
|
|
|
|
|
return out
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def decrypt(key, cipertext):
|
|
|
|
|
out=""
|
|
|
|
|
out = ""
|
|
|
|
|
for i in range(0, len(cipertext)):
|
|
|
|
|
pln = ord(cipertext[i])-(ord(key[i%len(key)]) - 0x61)
|
|
|
|
|
pln = ord(cipertext[i])-(ord(key[i % len(key)]) - 0x61)
|
|
|
|
|
pln = pln + 26 if pln < 0x61 else pln
|
|
|
|
|
out += chr(pln)
|
|
|
|
|
return out
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
import argparse
|
|
|
|
|
parser = argparse.ArgumentParser()
|
|
|
|
|
@ -22,11 +25,11 @@ if __name__ == "__main__":
|
|
|
|
|
parser.add_argument('--out', metavar='FILE')
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
|
|
#strip non-alphabetic chars from file and convert to lower case
|
|
|
|
|
txt = ''.join([x for x in open(args.FILE, "r").read().lower() if x.isalpha()])
|
|
|
|
|
# strip non-alphabetic chars from file and convert to lower case
|
|
|
|
|
t = ''.join([x for x in open(args.FILE, "r").read().lower() if x.isalpha()])
|
|
|
|
|
|
|
|
|
|
if(args.encrypt != None):
|
|
|
|
|
print(encrypt(args.encrypt, txt))
|
|
|
|
|
print(encrypt(args.encrypt, t))
|
|
|
|
|
|
|
|
|
|
if(args.decrypt != None):
|
|
|
|
|
print(decrypt(args.decrypt, txt))
|
|
|
|
|
print(decrypt(args.decrypt, t))
|
|
|
|
|
|