Я пытаюсь зашифровать PDF-файл, используя PyCryptodome , и в качестве ключевого параметра указываю уникальный идентификатор системы. то есть uuid et c. Я хочу использовать AES Encryption вместе с режимом GCM, потому что режим GCM - это Authenti c Encryption , поскольку он возвращает MA C, который используется для аутентификации. У меня следующие проблемы:
- Я много гуглил, но не могу найти код, который шифрует файл. Все шифруют строки.
- Я хочу использовать режим GCM с AES, поэтому мне нужен пример, который использует режим GCM.
- В приведенном ниже примере после добавления кода шифрования
iv
(Вектор инициализации) с зашифрованным текстом и его использованием при расшифровке. Поэтому мой вопрос заключается в том, как мне выполнить sh при шифровании файлов. - Я не знаю, как использовать проверку подлинности MA C при расшифровке файла.
Это то, что у меня сейчас есть, К сожалению, это также строка шифрования:
import base64
import hashlib
from Cryptodome.Cipher import AES
from Cryptodome.Random import get_random_bytes
key = hashlib.sha256(b"uuid goes here").digest()
def encrypt(raw):
BS = AES.block_size
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
raw = base64.b64encode(pad(raw).encode('utf8'))
iv = get_random_bytes(AES.block_size)
cipher = AES.new(key= key, mode= AES.MODE_CFB,iv= iv)
return base64.b64encode(iv + cipher.encrypt(raw))
def decrypt(enc):
unpad = lambda s: s[:-ord(s[-1:])]
enc = base64.b64decode(enc)
iv = enc[:AES.block_size]
cipher = AES.new(key, AES.MODE_CFB, iv)
return unpad(base64.b64decode(cipher.decrypt(enc[AES.block_size:])).decode('utf8'))
e = encrypt('I am string, dont you want to use file?')
print(decrypt(e))