Шифрование и модификация ключа
This commit is contained in:
38
backend/utils/crypto.py
Normal file
38
backend/utils/crypto.py
Normal file
@@ -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)
|
||||||
Reference in New Issue
Block a user