aboutsummaryrefslogtreecommitdiff
path: root/challenge-015/zapwai/python/ch-2.py
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)