From f551b85a73dadd546759abf60a47d3dcda46477d Mon Sep 17 00:00:00 2001 From: Verum Date: Thu, 5 Mar 2026 18:48:27 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A8=D0=B8=D1=84=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=BC=D0=BE=D0=B4=D0=B8=D1=84?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/utils/crypto.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 backend/utils/crypto.py 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)