PHPでAES暗号化された16進数のテキストを取得しました。これは以下の通りです:コードは以下の通りですPHPでAES暗号化のためにPythonで復号化する方法
:
<?php
$str = "abcdefghijklmnopqrstuvwxyz";
$method = "aes-256-cbc";
$key = 'pqrstuvwxyz$abcdefghijAB';
$iv = 'DEFGHTABCIESPQXO';
echo bin2hex(openssl_encrypt($str, $method, $key, OPENSSL_RAW_DATA, $iv));
echo "\n";
?>
2324ab5ec7a901247bf01b08bd1956688843dad5a8e15106ca3a5b9258918527
私はPythonスクリプトを作った:
import binascii
from Crypto.Cipher import AES
data = "abcdefghijklmnopqrstuvwxyz"
key = "pqrstuvwxyz$abcdefghijAB"
iv = "DEFGHTABCIESPQXO"
encrypted = "2324ab5ec7a901247bf01b08bd1956688843dad5a8e15106ca3a5b9258918527"
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted = cipher.decrypt(binascii.unhexlify(encrypted))
print(decrypted)
私はこれを持って、それは "ABCDEFGHIJKLMNOPQRSTUVWXYZ" と同じ文字列ではありません、 :
b' \xea\xbc\x13\x98!xw\x0c,\xac6\xeb\x1c\x14\\Z\x0b\x0fTY\xbe\x0b^W\xcem\xa4\x9ea\xde\x1b'
私はこのPythonのスクリプトのために解決したいエラー
decrypted.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 1-2: invalid continuation byte
を得ました。
256ビットのAESで192ビットのキーを使用しようとしていますが、これ以外の操作を行う前に修正します。 –
非常にありがとう!私は32bitキーで解読できます。 – terapyon