将 des 字符串解密为纯文本
Decrypt a des string in to plain text
我需要解密一个用des算法加密的字符串。在 PHP 中我该怎么办?我有如下真实测试用例:
key ='0123456789abcdef'
encryptedValue = '88C10F0B8C084E5F'; //hex value
decodedValue = '2020202039353538'; // this is hex
我试过了
$keyValue ='0123456789abcdef';
$encryptedValue = '88C10F0B8C084E5F'; //hex value
$decodedValue = '2020202039353538'; // this is hex
$decryptedData = mcrypt_decrypt( MCRYPT_DES, $keyValue, $encryptedValue , 'ecb');
var_dump($decryptedData);
var_dump($decodedValue);
解密数据的输出为空。 我检查了 this solution。请给我一个解决方案。
更新:2017 年 1 月 18 日:
许多人建议我不要使用 des 或 mcrypt。 我需要解密这个,因为我的 API 提供者用这个算法回复我。 关于 mcrypt_decrypt
函数,我没有找到替代方案。现在请给我更多建议。
我按照@duskwuff试了一下,修改为。
$decryptedData = mcrypt_decrypt( MCRYPT_DES, $keyValue, hex2bin($encryptedValue) 'ecb');
var_dump(bin2hex($decryptedData));
输出是空字符串,这显然是bool false
的二进制表示
为方便起见,我想分享加密计算器的结果。
我也收到此 警告:Warning: mcrypt_decrypt(): Key of size 16 not supported by this algorithm. Only keys of size 8 supported in /var/www/html/encdec/enc.phtml on line 13
您传递给 mcrypt_decrypt()
的值看起来像是十六进制数据的表示,而不是直接传递的。在输入上使用 hex2bin()
将它们转换为二进制数据,并使用 bin2hex()
将输出转换回预期的表示形式。
另外,停止使用 mcrypt。它又旧又破,已从 PHP 7.2.
中删除
我使用以下代码解决了我的问题:
$keyValue ='0123456789abcdef'; //hex value
$encryptedOrderId = '88C10F0B8C084E5F'; //hex value
$decodeValueByOnlineTool = '2020202039353538'; // this is hex
$opensslDecrypt = openssl_decrypt( hex2bin($encryptedOrderId) , 'des-ecb' , hex2bin($keyValue) , OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING , '' );
var_dump($opensslDecrypt);
我需要解密一个用des算法加密的字符串。在 PHP 中我该怎么办?我有如下真实测试用例:
key ='0123456789abcdef'
encryptedValue = '88C10F0B8C084E5F'; //hex value
decodedValue = '2020202039353538'; // this is hex
我试过了
$keyValue ='0123456789abcdef';
$encryptedValue = '88C10F0B8C084E5F'; //hex value
$decodedValue = '2020202039353538'; // this is hex
$decryptedData = mcrypt_decrypt( MCRYPT_DES, $keyValue, $encryptedValue , 'ecb');
var_dump($decryptedData);
var_dump($decodedValue);
解密数据的输出为空。 我检查了 this solution。请给我一个解决方案。
更新:2017 年 1 月 18 日:
许多人建议我不要使用 des 或 mcrypt。 我需要解密这个,因为我的 API 提供者用这个算法回复我。 关于 mcrypt_decrypt
函数,我没有找到替代方案。现在请给我更多建议。
我按照@duskwuff试了一下,修改为。
$decryptedData = mcrypt_decrypt( MCRYPT_DES, $keyValue, hex2bin($encryptedValue) 'ecb');
var_dump(bin2hex($decryptedData));
输出是空字符串,这显然是bool false
为方便起见,我想分享加密计算器的结果。Warning: mcrypt_decrypt(): Key of size 16 not supported by this algorithm. Only keys of size 8 supported in /var/www/html/encdec/enc.phtml on line 13
您传递给 mcrypt_decrypt()
的值看起来像是十六进制数据的表示,而不是直接传递的。在输入上使用 hex2bin()
将它们转换为二进制数据,并使用 bin2hex()
将输出转换回预期的表示形式。
另外,停止使用 mcrypt。它又旧又破,已从 PHP 7.2.
中删除我使用以下代码解决了我的问题:
$keyValue ='0123456789abcdef'; //hex value
$encryptedOrderId = '88C10F0B8C084E5F'; //hex value
$decodeValueByOnlineTool = '2020202039353538'; // this is hex
$opensslDecrypt = openssl_decrypt( hex2bin($encryptedOrderId) , 'des-ecb' , hex2bin($keyValue) , OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING , '' );
var_dump($opensslDecrypt);