fasthost / examples /test /encrypt.py
chipling's picture
Upload 26 files
65d3b67 verified
raw
history blame
621 Bytes
import base64
SECRET_KEY = b"my-simple-key" # Keep this key short and secret
def xor_encrypt(data: bytes, key: bytes) -> bytes:
return bytes([b ^ key[i % len(key)] for i, b in enumerate(data)])
def encrypt_video_id(video_id: str) -> str:
encrypted = xor_encrypt(video_id.encode(), SECRET_KEY)
return base64.urlsafe_b64encode(encrypted).decode().rstrip("=")
def decrypt_video_id(enc_id: str) -> str:
padded = enc_id + "=" * (-len(enc_id) % 4) # Add padding back
encrypted = base64.urlsafe_b64decode(padded.encode())
decrypted = xor_encrypt(encrypted, SECRET_KEY)
return decrypted.decode()