用 openssl_decrypt 在 PHP 中解密 des

Decrypt des with openssl_decrypt in PHP

正在尝试使用此代码解密单个 des 加密数据:

$keyValue ='0123456789abcdef'; //hex value
$encryptedOrderId = '88C10F0B8C084E5F'; //hex value
$binaryEncrypted = hex2bin($encryptedOrderId);
$decodeValueByOnlineTool = '2020202039353538';  // this is hex
$opensslDecrypt = openssl_decrypt(  $encryptedOrderId  ,'DES-ECB', $keyValue, OPENSSL_RAW_DATA , '' );
var_dump($opensslDecrypt);

输出为假。我不知道我做错了什么。

我的工具的输出如下:

您的输入是十六进制的。 openssl_decrypt 需要二进制。在传递给 openssl_decrypt.

之前,在每个输入上使用 hex2bin
openssl_decrypt(hex2bin($encryptedOrderId), 'DES-ECB', hex2bin($keyValue), ...

记得将结果转换回十六进制以获得您想要的结果。确保您已根据屏幕截图设置 OPENSSL_ZERO_PADDING

编辑:我使用的确切代码...

$keyValue ='0123456789abcdef'; //hex value
$encryptedOrderId = '88C10F0B8C084E5F'; //hex value
$binaryEncrypted = hex2bin($encryptedOrderId);
$decodeValueByOnlineTool = '2020202039353538';  // this is hex
$opensslDecrypt = openssl_decrypt( $binaryEncrypted  ,'des-ecb', hex2bin($keyValue), OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING , '');
var_dump($opensslDecrypt);