使用php AES-256-CBC和;解密unix命令行
我用php编写了使用PHPAES-256-CBC的encypt代码 我想帮助您使用unix命令行获取decypt 这是我的php代码行使用php AES-256-CBC和;解密unix命令行,php,aes,Php,Aes,我用php编写了使用PHPAES-256-CBC的encypt代码 我想帮助您使用unix命令行获取decypt 这是我的php代码行 $dataToEncrypt = hex2bin("6C38AD4E822835753F0E64928CB62744D73F878E763B227CFE8F445028527ACFE5DD0CD0352B396EDC8402414FC68DD5"); $aesKey = hex2bin("152bd89657e03fdc7375a00e1fb1a38bab097
$dataToEncrypt = hex2bin("6C38AD4E822835753F0E64928CB62744D73F878E763B227CFE8F445028527ACFE5DD0CD0352B396EDC8402414FC68DD5");
$aesKey = hex2bin("152bd89657e03fdc7375a00e1fb1a38bab097c103b803846");
$iv = hex2bin("B109DAE1B71B638E");
$result2 = openssl_encrypt($dataToEncrypt, 'AES-256-CBC', $aesKey, 3,$iv);
echo bin2hex($result2);
输出由php封装
b2cf19a92ef12bc4ae2d78d73ab587e2178f23913aa132dbd7972d42387687a2c9eab89250dd7eba5709aaef1e8d417d
对于derypt,我想这样使用它
openssl aes-256-cbc -d -K 152bd89657e03fdc7375a00e1fb1a38bab097c103b803846 -iv B109DAE1B71B638E -in encrypted.txt -out decrypted.txt
问题:decypt无法获得相同的结果
encrypted.txt
中,例如,可以使用:
数据通过OpenSSL语句以二进制格式存储在decrypted.txt
中,并可通过以下方式读取和显示:
$decrypted=bin2hex(文件获取内容(“”);
或者使用十六进制编辑器openssl\u encrypt
-调用中,值3
用作第四个参数($options
),它对应于标志组合OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
。这意味着加密数据以二进制格式返回,并且不使用填充。这是可能的,因为明文的长度为48=3*16字节,因此对应于块大小(16字节)的整数倍。由于缺少填充,OpenSSL语句中必须使用-nopad
选项。注意:与其使用值3
,不如使用OpenSSL_RAW_DATA | OpenSSL_ZERO_padding
openssl\u encrypt
和openssl使用0
-值将密钥和IV填充到所需的长度,以便可以在openssl语句中使用PHP代码中的值或填充值。注意:使用太短的密钥和IV通常会降低安全性,应避免使用- 假设加密数据以二进制格式(而不是十六进制字符串)存储在文件
中,例如,可以使用: 数据通过OpenSSL语句以二进制格式存储在encrypted.txt
中,并可通过以下方式读取和显示:decrypted.txt
或者使用十六进制编辑器$decrypted=bin2hex(文件获取内容(“”);
- 在
-调用中,值openssl\u encrypt
用作第四个参数(3
),它对应于标志组合$options
。这意味着加密数据以二进制格式返回,并且不使用填充。这是可能的,因为明文的长度为48=3*16字节,因此对应于块大小(16字节)的整数倍。由于缺少填充,OpenSSL语句中必须使用OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
选项。注意:与其使用值-nopad
,不如使用3
OpenSSL_RAW_DATA | OpenSSL_ZERO_padding
- 密钥的长度为24字节,因此比使用32字节密钥的-256短8字节。IV的长度为8字节,因此比使用16字节IV的AES短8字节(对应于AES块大小).
和openssl使用openssl\u encrypt
-值将密钥和IV填充到所需的长度,以便可以在openssl语句中使用PHP代码中的值或填充值。注意:使用太短的密钥和IV通常会降低安全性,应避免使用0
file_put_contents('<path to encrypted.txt>', $result2);
openssl aes-256-cbc -d -K 152bd89657e03fdc7375a00e1fb1a38bab097c103b8038460000000000000000 -iv B109DAE1B71B638E0000000000000000 -nopad -in encrypted.txt -out decrypted.txt
$decrypted = bin2hex(file_get_contents('<path to decrypted.txt>');