18 lines
455 B
Python
18 lines
455 B
Python
from hashlib import sha256
|
|
from itertools import cycle
|
|
import base64
|
|
|
|
def crypt(msg: bytes, key: str) -> bytes:
|
|
key_h = sha256()
|
|
key_h.update(key.encode('utf8'))
|
|
key = key_h.digest()
|
|
|
|
return bytes(p ^ k for (p, k) in zip(msg, cycle(key)))
|
|
|
|
def encrypt(msg: str, key: str) -> str:
|
|
return base64.b64encode(crypt(bytes(msg, 'utf8'), key)).decode('utf8')
|
|
|
|
def decrypt(msg: str, key: str) -> str:
|
|
return crypt(base64.b64decode(msg), key).decode('utf8')
|
|
|