From 53ba4f64a538f97f99a184db88a74dc5db00c8c2 Mon Sep 17 00:00:00 2001 From: Victor Mark Date: Sun, 7 Oct 2018 16:53:15 +0200 Subject: [PATCH 1/2] Adding vigenere cipher script --- vigenere_cipher/README.md | 17 +++++++++ vigenere_cipher/vigenere.py | 75 +++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 vigenere_cipher/README.md create mode 100644 vigenere_cipher/vigenere.py diff --git a/vigenere_cipher/README.md b/vigenere_cipher/README.md new file mode 100644 index 0000000..34ababf --- /dev/null +++ b/vigenere_cipher/README.md @@ -0,0 +1,17 @@ +# Vigenère cipher + +Python script that encrypts/decrypts a given text with a given key based on the [Vigenere cipher](https://en.wikipedia.org/wiki/Vigenère_cipher) + +# Usage + +For Windows users: + +```bash +$ python vigenere.py +``` + +For Mac/Linux/Unix users: + +```bash +$ ./vigenere.py +``` diff --git a/vigenere_cipher/vigenere.py b/vigenere_cipher/vigenere.py new file mode 100644 index 0000000..c9e9470 --- /dev/null +++ b/vigenere_cipher/vigenere.py @@ -0,0 +1,75 @@ +alph = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + +#actuall stuff +def decryption(key, text): + key_len = len(key) + count = 0 + #adjusting the key + real_key = '' + #fixing spaces + for i in text: + if i != ' ': + if count == len(key): + count = 0 + real_key += key[count] + count += 1 + else: + real_key += ' ' + print(real_key) + encr = '' + #decrypting + for c in range(0,len(text)): + if text[c] == ' ': + encr += ' ' + else: + encr += (alph[(ord(text[c]) - ord(real_key[c])) % 26]) + return encr + +def encryption(key, text): + key_len = len(key) + count = 0 + #adjusting the key + real_key = '' + #fixing spaces + for i in text: + if i != ' ': + if count == len(key): + count = 0 + real_key += key[count] + count += 1 + + else: + real_key += ' ' + print(real_key) + encr = '' + #encrypting + for c in range(0,len(text)): + if text[c] == ' ': + encr += ' ' + else: + encr += (alph[(ord(real_key[c]) + ord(text[c])) % 26]) + return encr + +#user input +def main(): + boolean = True + while(boolean): + try: + mode = input('Do you want to encrypt or to decrypt [e/d]? ') + if mode.upper().startswith('E'): + text = input('Please enter the text: ').upper() + key = input('Please enter the key: ').upper() + print(encryption(key, text)) + boolean = False + elif mode.upper().startswith('D'): + text = input('Please enter the text: ').upper() + key = input('Please enter the key: ').upper() + print(decryption(key, text)) + boolean = False + else: + print('Please enter a valid choice') + except KeyboardInterrupt: + exit() + +if __name__ == '__main__': + main() From bc61e2358e4d1672419d7be02aaa9ffaf874c261 Mon Sep 17 00:00:00 2001 From: Victor Mark Date: Sun, 7 Oct 2018 17:07:45 +0200 Subject: [PATCH 2/2] Fixing number input --- vigenere_cipher/vigenere.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vigenere_cipher/vigenere.py b/vigenere_cipher/vigenere.py index c9e9470..0a32499 100644 --- a/vigenere_cipher/vigenere.py +++ b/vigenere_cipher/vigenere.py @@ -15,12 +15,14 @@ def decryption(key, text): count += 1 else: real_key += ' ' - print(real_key) + #print(real_key) encr = '' #decrypting for c in range(0,len(text)): if text[c] == ' ': encr += ' ' + elif ((ord(text[c]) >= 48) and (ord(text[c]) <= 57)): + encr += text[c] else: encr += (alph[(ord(text[c]) - ord(real_key[c])) % 26]) return encr @@ -40,12 +42,14 @@ def encryption(key, text): else: real_key += ' ' - print(real_key) + #print(real_key) encr = '' #encrypting for c in range(0,len(text)): if text[c] == ' ': encr += ' ' + elif ((ord(text[c]) >= 48) and (ord(text[c]) <= 57)): + encr += text[c] else: encr += (alph[(ord(real_key[c]) + ord(text[c])) % 26]) return encr