【发布时间】:2018-01-18 15:04:37
【问题描述】:
尝试使用此代码解密单个 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时没有使用keyValue,您不觉得奇怪吗?您是否真的编写了该代码,或者您在不理解的情况下从某个地方复制了它?我建议您阅读openssl_decrypt的文档。 -
抱歉,我是如何从我的代码中删除它的,请检查我的更新。
-
DES 密钥的长度为 64 位(包括奇偶校验),但您传入的(提示:hex)字符串被解释为 128 位。你能从中找出问题所在吗?显然,您的警告也很重要。
-
实际上并非如此,如果可行,请给出答案,我将其标记为正确。你的意思是说我需要把它转换成二进制?
-
是的,你知道。并修复 IV。我认为这是不言自明的。
标签: encryption openssl cryptography php-5.6