Шифрование и модификация ключа
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