Я использую Zend2 Crypt module для шифрования данных. Вот мой код.Как расшифровать зашифрованные данные Zend2?
$cipher = BlockCipher::factory('mcrypt', array(
'algorithm' => 'aes',
));
$cipher->setKey('mypassphrase');
$encrypted = $cipher->encrypt('Hey, I am the secret data');
Прохладный, он работает хорошо! Теперь мне нужно расшифровать данные $encrypted
(Эй, я секретные данные) в Python.
Я использую pycrypto для этого. Какие шаги для дешифрования данных за пределами моей PHP-среды?
from Crypto.Cipher import AES
import base64
import hashlib
password = 'mypassphrase'
key = hashlib.sha256(password).digest()
decoded = base64.standard_b64decode(encrypted)
cipher = AES.new(key, AES.MODE_CBC)
data = cipher.decrypt(decoded)
мне нужно указать IV
, потому что Zend использует MODE_CBC по умолчанию. Как я могу указать его в моем коде Python?
Вот документация Zend2:
Выход шифрования является строкой, закодированной в Base64 (по умолчанию), который содержит значение HMAC, вектор IV, и зашифрованный текст. Используемый режим шифрования - это CBC (со случайным IV по умолчанию) и SHA256 как хэш-алгоритм по умолчанию HMAC. Адаптер Mcrypt шифрует с использованием механизма заполнения PKCS # 7 по умолчанию. Вы можете указать другой метод заполнения, используя специальный адаптер для этого (Zend \ Crypt \ Symmetric \ Padding). Ключи шифрования и аутентификации, используемые блочным кодом, генерируются с помощью алгоритма PBKDF2, который используется как функция деривации ключа из ключа пользователя, указанного с помощью метода setKey().
Может ли кто-нибудь помочь мне адаптировать мой код на Python для дешифрования данных? Thanks
Извините, но просто создавая любой код AES, который использует 'mypassphrase', не сокращает его для меня. Где PBKDF2 и HMAC ушли? –