首页 > 解决方案 > 无法使用 php 解码 arduino 编码的 AES-128 ECB 字符串

问题描述

我有一个使用 Arduino 的加密字符串。

Input text => Message to be encrypted
Key as hex => 01020304050607080910111213141516
Encrypted => dba8f0f76ed0e75abc4a970b254478bd0f47a9021a8fe940a2685e4b7a8df1fe

我无法使用 PHP OpenSSL 解密它。

我试过的。

    $raw = "dba8f0f76ed0e75abc4a970b254478bd0f47a9021a8fe940a2685e4b7a8df1fe";
    $key = "01020304050607080910111213141516";
    $decrypt = openssl_decrypt($raw, 'AES-128-ECB', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);
    var_dump($decrypt);

    string(64) "s=a����@T'Oҳ��,8��)�oGx��ݡ����*�������4f�z���N�"

我怎样才能得到解密的字符串=>“要加密的消息”

标签: phparduino

解决方案


$key = "01020304050607080910111213141516";
// convert your key
$key = pack('H*',$key);

$raw = "dba8f0f76ed0e75abc4a970b254478bd0f47a9021a8fe940a2685e4b7a8df1fe";
//convert your cipertext
$raw = hex2bin($raw);

$decrypt = openssl_decrypt($raw, 'aes-128-ecb', $key, OPENSSL_ZERO_PADDING | OPENSSL_RAW_DATA);

var_dump($decrypt); // Message to be encrypted

推荐阅读