From bf106bf76d8d2142bfd4a9b70d0d543b1acb8ee3 Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Sun, 22 Nov 2020 23:15:41 +0100 Subject: [PATCH 1/4] add decrypt and update encrypt --- src/vigenere/vig.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/vigenere/vig.py b/src/vigenere/vig.py index 0391d41..7df5856 100644 --- a/src/vigenere/vig.py +++ b/src/vigenere/vig.py @@ -1,13 +1,16 @@ def encrypt(key, plaintext): - pln_bytes = bytes(plaintext, 'UTF-8') - key_bytes = bytes(key, 'UTF-8') out="" + for i in range(0, len(plaintext)): + out = out + chr(((ord(key[i%len(key)])+ord(plaintext[i])-(0x61+0x61))%26)+0x61) + return out - for i in range(len(pln_bytes)): - pln_chr_index = pln_bytes[i] - 0x61 - key_chr_index = key_bytes[i % len(key)] - 0x61 - out_chr_index = (pln_chr_index + key_chr_index) % 26 - out = out + chr(out_chr_index + 0x61) +def decrypt(key, cipertext): + out="" + for i in range(0, len(cipertext)): + pln = ord(cipertext[i])-(ord(key[i%len(key)]) - 0x61) + if pln < 0x61: + pln = pln + 26 + out = out + chr(pln) return out if __name__ == "__main__": @@ -20,5 +23,15 @@ if __name__ == "__main__": parser.add_argument('--out', metavar='FILE') args = parser.parse_args() + fd = open(args.FILE, "r") + txt_in = fd.read() + txt = "" + for i in txt_in.lower(): + if i.isalpha(): + txt = txt + i + + if(args.encrypt != None): + print(encrypt(args.encrypt, txt)) -print(encrypt("bbb", "test")) + if(args.decrypt != None): + print(decrypt(args.decrypt, txt)) From 8078694ee0d71c37595d9be59af42d72adab494e Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Sun, 22 Nov 2020 23:56:00 +0100 Subject: [PATCH 2/4] shorten code --- src/vigenere/vig.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/vigenere/vig.py b/src/vigenere/vig.py index 7df5856..f7557bb 100644 --- a/src/vigenere/vig.py +++ b/src/vigenere/vig.py @@ -8,9 +8,8 @@ def decrypt(key, cipertext): out="" for i in range(0, len(cipertext)): pln = ord(cipertext[i])-(ord(key[i%len(key)]) - 0x61) - if pln < 0x61: - pln = pln + 26 - out = out + chr(pln) + pln = pln + 26 if pln < 0x61 else pln + out += chr(pln) return out if __name__ == "__main__": @@ -21,14 +20,10 @@ if __name__ == "__main__": command_group.add_argument('--encrypt', metavar='KEY') command_group.add_argument('--decrypt', metavar='KEY') parser.add_argument('--out', metavar='FILE') - args = parser.parse_args() - fd = open(args.FILE, "r") - txt_in = fd.read() - txt = "" - for i in txt_in.lower(): - if i.isalpha(): - txt = txt + i + + #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()]) if(args.encrypt != None): print(encrypt(args.encrypt, txt)) From 7dec1c6eb9466101ac53818b389b9b7040874ea2 Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Mon, 23 Nov 2020 00:15:56 +0100 Subject: [PATCH 3/4] pep up code --- src/vigenere/vig.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/vigenere/vig.py b/src/vigenere/vig.py index f7557bb..d215bd1 100644 --- a/src/vigenere/vig.py +++ b/src/vigenere/vig.py @@ -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)) From 839c571f6ffb98171c88acd183e18d93b365f4aa Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Mon, 23 Nov 2020 00:34:29 +0100 Subject: [PATCH 4/4] add file writing when using --out --- src/vigenere/vig.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vigenere/vig.py b/src/vigenere/vig.py index d215bd1..9470929 100644 --- a/src/vigenere/vig.py +++ b/src/vigenere/vig.py @@ -29,7 +29,12 @@ if __name__ == "__main__": t = ''.join([x for x in open(args.FILE, "r").read().lower() if x.isalpha()]) if(args.encrypt != None): - print(encrypt(args.encrypt, t)) + out = encrypt(args.encrypt, t) if(args.decrypt != None): - print(decrypt(args.decrypt, t)) + out = decrypt(args.decrypt, t) + + if(args.out != None): + open(args.out, "w").write(out) + else: + print(out)