blob: 36f187c83fc33fbf15c40808495e6427e566a343 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
def vigenere(mode, key, msg):
alph = "abcdefghijklmnopqrstuvwxyz"
q = len(msg) / len(key)
while (q > 0):
key += key
q -= 1
while len(key) > len(msg):
key = key[:-1]
msg_letters = list(msg)
key_letters = list(key)
rots = []
for i in key_letters:
rots.append(alph.index(i))
ans_letters = []
for i in range(len(msg_letters)):
if not msg_letters[i].isalpha():
ans_letters.append(msg_letters[i])
continue
v = alph.index(msg_letters[i])
if mode == 0:
x = (v + rots[i]) % 26
else:
x = (v - rots[i]) % 26
let = alph[x:x+1]
ans_letters.append(let)
return ''.join(ans_letters)
msg = "hello world"
key = "test"
enc = vigenere(0, key, msg)
dec = vigenere(1, key, enc)
print(enc)
print(dec)
|