Zend2 Crypt モジュールを使用してデータを暗号化しています。これが私のコードです。
$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 のドキュメントは次のとおりです。
暗号化の出力は、HMAC 値、IV ベクトル、および暗号化されたテキストを含む、Base64 (デフォルト) でエンコードされた文字列です。使用される暗号化モードは、CBC (デフォルトでランダムな IV を持つ) と、HMAC のデフォルトのハッシュ アルゴリズムとしての SHA256 です。Mcrypt アダプタは、デフォルトで PKCS#7 パディング メカニズムを使用して暗号化します。そのための特別なアダプター (Zend\Crypt\Symmetric\Padding) を使用して、別のパディング方法を指定できます。BlockCipher で使用される暗号化および認証キーは、setKey() メソッドを使用して指定されたユーザーのキーからのキー導出関数として使用される PBKDF2 アルゴリズムで生成されます。
Python コードを適応させてデータを復号化するのを手伝ってくれる人はいますか? ありがとう