diff --git a/backend/utils/crypto.py b/backend/utils/crypto.py new file mode 100644 index 0000000..9419c33 --- /dev/null +++ b/backend/utils/crypto.py @@ -0,0 +1,38 @@ +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)