39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
def encrypt_bytes(key: int, bs: bytes) -> bytes:
|
|
"""
|
|
Простое шифрование XOR + модификация ключа.
|
|
|
|
Аргументы:
|
|
- key: int - начальный ключ
|
|
- bs: bytes - данные для шифрования
|
|
|
|
Возвращает:
|
|
- bytes: зашифрованные данные
|
|
"""
|
|
result: bytearray = bytearray()
|
|
for b in bs:
|
|
k: int = (key >> 8) & 0xFF
|
|
enc: int = b ^ k
|
|
result.append(enc)
|
|
key = (enc & key) | 0x482D
|
|
return bytes(result)
|
|
|
|
|
|
def decrypt_bytes(key: int, bs: bytes) -> bytes:
|
|
"""
|
|
Обратное преобразование к EncryptBytes.
|
|
|
|
Аргументы:
|
|
- key: int - начальный ключ
|
|
- bs: bytes - данные для расшифровки
|
|
|
|
Возвращает:
|
|
- bytes: расшифрованные данные
|
|
"""
|
|
result: bytearray = bytearray()
|
|
for b in bs:
|
|
k: int = (key >> 8) & 0xFF
|
|
dec: int = b ^ k
|
|
result.append(dec)
|
|
key = (b & key) | 0x482D
|
|
return bytes(result)
|