Skip to content

Commit 1376e3c

Browse files
committed
Initial
1 parent ffc2c63 commit 1376e3c

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

Diff for: ciphers/vigenere_cipher.py

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
2+
3+
def main():
4+
message = input('Enter message: ')
5+
key = input('Enter key [alphanumeric]: ')
6+
mode = input('Encrypt/Decrypt [e/d]: ')
7+
8+
if mode.lower().startswith('e'):
9+
mode = 'encrypt'
10+
translated = encryptMessage(key, message)
11+
elif mode.lower().startswith('d'):
12+
mode = 'decrypt'
13+
translated = decryptMessage(key, message)
14+
15+
print('\n%sed message:' % mode.title())
16+
print(translated)
17+
18+
def encryptMessage(key, message):
19+
'''
20+
>>> encryptMessage('HDarji', 'This is Harshil Darji from Dharmaj.')
21+
'Akij ra Odrjqqs Gaisq muod Mphumrs.'
22+
'''
23+
return translateMessage(key, message, 'encrypt')
24+
25+
def decryptMessage(key, message):
26+
'''
27+
>>> decryptMessage('HDarji', 'Akij ra Odrjqqs Gaisq muod Mphumrs.')
28+
'This is Harshil Darji from Dharmaj.'
29+
'''
30+
return translateMessage(key, message, 'decrypt')
31+
32+
def translateMessage(key, message, mode):
33+
translated = []
34+
keyIndex = 0
35+
key = key.upper()
36+
37+
for symbol in message:
38+
num = LETTERS.find(symbol.upper())
39+
if num != -1:
40+
if mode == 'encrypt':
41+
num += LETTERS.find(key[keyIndex])
42+
elif mode == 'decrypt':
43+
num -= LETTERS.find(key[keyIndex])
44+
45+
num %= len(LETTERS)
46+
47+
if symbol.isupper():
48+
translated.append(LETTERS[num])
49+
elif symbol.islower():
50+
translated.append(LETTERS[num].lower())
51+
52+
keyIndex += 1
53+
if keyIndex == len(key):
54+
keyIndex = 0
55+
else:
56+
translated.append(symbol)
57+
return ''.join(translated)
58+
59+
if __name__ == '__main__':
60+
main()

0 commit comments

Comments
 (0)