/
O.S.Prog
/
InstrumentProtocol
Обзор
Документация
Войти
/
O.S.Prog
/
InstrumentProtocol
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
core/encryption_manager.py
44 строки
1 KB
O.S.Prog
Initial commit: InstrumentProtocol v2.0
17 июл 2026, 15:11
17 июл 2026, 15:11
1e845bd
Код
Авторство
О чём код?
import os import base64 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad class EncryptionManager: """Шифрование и расшифровка файлов протоколов (AES-256)""" def __init__(self, key=None): """key — 32-байтовый ключ. Если не указан, генерируется новый.""" if key: self.key = key else: self.key = os.urandom(32) def get_key(self): """Возвращает ключ (для сохранения)""" return self.key def encrypt_file(self, filepath, output_path): """Шифрует файл и сохраняет как .enc""" with open(filepath, 'rb') as f: data = f.read() iv = os.urandom(16) cipher = AES.new(self.key, AES.MODE_CBC, iv) encrypted = cipher.encrypt(pad(data, AES.block_size)) with open(output_path, 'wb') as f: f.write(iv + encrypted) def decrypt_file(self, filepath, output_path): """Расшифровывает .enc файл во временный DOCX""" with open(filepath, 'rb') as f: raw = f.read() iv = raw[:16] encrypted = raw[16:] cipher = AES.new(self.key, AES.MODE_CBC, iv) decrypted = unpad(cipher.decrypt(encrypted), AES.block_size) with open(output_path, 'wb') as f: f.write(decrypted)