【发布时间】:2017-05-07 11:10:53
【问题描述】:
我正在尝试使用 mycrypt php 库来解密以下内容:
键: aaaaaaaabbbbbbbbccccccccdddddddddd
数据: b5057bbc04b842a96144a0f617f2820e
预期结果: Test123123
数据使用 3DES 加密,模式为 ECB。我目前正在使用的代码将十六进制值解密为“e2119b734b5050e3”,转换为“â›sKPPã”。我尝试使用返回“False”的开放 ssl。
代码如下:
(PHP 版本 5.3.3)
$key = 'aaaaaaaabbbbbbbbccccccccdddddddd';
$key = pack('H*',$key);
// DATA
$data = 'b5057bbc04b842a96144a0f617f2820e';
$data = pack('H'.strlen($key),$data);
// DECRYPT MCRYPT
$data = rtrim(mcrypt_decrypt(MCRYPT_3DES, $key, $data, MCRYPT_MODE_ECB), "\0");
$decryptedHex = unpack('H*',$data);
// DECRYPT OPEN SSL (RETURNS FALSE)
$result = openssl_decrypt($data,'des-ede3', $key);
// ECHO
echo $decryptedHex[1];
【问题讨论】:
-
哎呀。如果您避免使用 mcrypt,您的生活将会大大改善。 paragonie.com/blog/2015/05/…
-
@pvg 我已经尝试过 mcrypt 和 openSSL。使用 openSSL 时,我收到“错误”响应。我已将此代码添加到问题中。
-
检查 openssl php 绑定文档。您需要为原始数据设置一些选项
-
另外,缺少填充信息。您的测试字符串看起来不像块大小。这实际上是如何以及使用什么参数加密的?
-
@pvg 数据使用 3DES 和 EBC 模式加密。我不确定该过程是如何通过第三方完成的。我知道它已成功加密,因为我使用了在线工具,例如:tripledes.online-domain-tools.com 似乎已成功解密数据。
标签: php encryption mcrypt 3des tripledes