25 lines
682 B
Python
25 lines
682 B
Python
class Encryption:
|
|
@staticmethod
|
|
def vigenere(text: str, key: str, encrypt=True):
|
|
result = ''
|
|
|
|
for i in range(len(text)):
|
|
letter_n = ord(text[i])
|
|
key_n = ord(key[i % len(key)])
|
|
|
|
if encrypt:
|
|
value = (letter_n + key_n) % 1114112
|
|
else:
|
|
value = (letter_n - key_n) % 1114112
|
|
|
|
result += chr(value)
|
|
|
|
return result
|
|
|
|
@staticmethod
|
|
def encrypt(text: str, key: str):
|
|
return Encryption.vigenere(text=text, key=key, encrypt=True)
|
|
|
|
@staticmethod
|
|
def decrypt(text: str, key: str):
|
|
return Encryption.vigenere(text=text, key=key, encrypt=False) |