Files
notes/CS1032/lecture-2023-11-23/crypt.py
bluepython508 dc42625cf1 .
2024-01-22 10:56:12 +00:00

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')