Files
avatar/vigenere.py
T

35 lines
1005 B
Python

class Vigenere(object):
def __init__(self, key):
assert(type(key) == type("Hello, world!"))
assert(key.isalpha())
self.key = key
self.key = self.key.lower()
self.key_len = len(key)
self.chr2num = {}
for i in range(26):
self.chr2num[chr(ord('a')+i)] = i
print(self.chr2num)
def encrypt(self, plaintext):
assert(type(plaintext) == type("Hello, world!"))
assert(plaintext.isalpha())
plaintext = plaintext.lower()
ciphertext = ""
for i in range(0, len(plaintext), self.key_len):
for j in range(self.key_len):
tmp = i + j
if tmp < len(plaintext):
ciphertext += chr((self.chr2num[plaintext[tmp]] + self.chr2num[self.key[j]]) % 26 + ord('a'))
else:
break
print(ciphertext)
if __name__ == "__main__":
v = Vigenere("tvtsidl")
v1 = Vigenere("tvtddfm")