task3 #2
@ -1,40 +0,0 @@
|
|||||||
class VigenereCipher(object):
|
|
||||||
def __init__(self, key, alphabet):
|
|
||||||
self.key = key
|
|
||||||
self.alphabet = alphabet
|
|
||||||
|
|
||||||
def encode(self, text):
|
|
||||||
encoded = []
|
|
||||||
idx_key = 0
|
|
||||||
|
|
||||||
for char in text:
|
|
||||||
if char in self.alphabet:
|
|
||||||
text_pos = self.alphabet.index(char)
|
|
||||||
key_char = self.key[idx_key % len(self.key)]
|
|
||||||
key_pos = self.alphabet.index(key_char)
|
|
||||||
|
|
||||||
pos = (text_pos + key_pos) % len(self.alphabet)
|
|
||||||
encoded.append(self.alphabet[pos])
|
|
||||||
else:
|
|
||||||
encoded.append(char)
|
|
||||||
idx_key += 1
|
|
||||||
|
|
||||||
return "".join(encoded)
|
|
||||||
|
|
||||||
def decode(self, text):
|
|
||||||
decoded = []
|
|
||||||
idx_key = 0
|
|
||||||
|
|
||||||
for char in text:
|
|
||||||
if char in self.alphabet:
|
|
||||||
text_pos = self.alphabet.index(char)
|
|
||||||
key_char = self.key[idx_key % len(self.key)]
|
|
||||||
key_pos = self.alphabet.index(key_char)
|
|
||||||
|
|
||||||
pos = (text_pos - key_pos) % len(self.alphabet)
|
|
||||||
decoded.append(self.alphabet[pos])
|
|
||||||
else:
|
|
||||||
decoded.append(char)
|
|
||||||
idx_key += 1
|
|
||||||
|
|
||||||
return "".join(decoded)
|
|
||||||
Loading…
x
Reference in New Issue
Block a user