Php 使用十六进制密钥从十六进制数据解密3DE

Php 使用十六进制密钥从十六进制数据解密3DE,php,encryption,mcrypt,3des,tripledes,Php,Encryption,Mcrypt,3des,Tripledes,我正在尝试使用mycrypt php库解密以下内容: 键:aaaaaaaa bbbbbbbb ccccccc dddddd 数据:b5057bbc04b842a96144a0f617f2820e 预期结果:Test123123 数据使用3DES加密,模式为ECB。我目前使用的代码将十六进制值解密为“e2119b734b505e3”,这将转换为“–sKPPã”。我曾尝试使用返回“False”的openssl 代码如下: (PHP版本5.3.3) 这里的问题是有太多的缺失信息——3DES的确切变体,

我正在尝试使用mycrypt php库解密以下内容:

键:aaaaaaaa bbbbbbbb ccccccc dddddd

数据:b5057bbc04b842a96144a0f617f2820e

预期结果:Test123123

数据使用3DES加密,模式为ECB。我目前使用的代码将十六进制值解密为“e2119b734b505e3”,这将转换为“–sKPPã”。我曾尝试使用返回“False”的openssl

代码如下:

(PHP版本5.3.3)


这里的问题是有太多的缺失信息——3DES的确切变体,填充信息。只要稍微修改一下加密选项,而不是解密,就可以尝试生成密文来找到正确的选项。结果是

openssl_encrypt($ptext,'des-ede', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING)
其中,
$ptext
“Test123123\0\0\0\0\0\0”

密文同样可以通过

$result = openssl_decrypt($data,'des-ede', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);

您需要升级到一个更新且受支持的PHP版本(PHP 5.3于2009年发布,2015年不再受支持)

噢。如果你避开麦克里普,你的生活会大大改善@pvg我已经尝试了mcrypt和openSSL。使用openSSL时,我收到一个“false”响应。我已经在问题中添加了这方面的代码。请查看openssl php绑定文档。您需要为原始数据设置一些选项。此外,缺少填充信息。您的测试字符串看起来不是块大小。这是如何以及使用什么参数进行加密的?@pvg使用3DES和模式EBC对数据进行加密。我不确定这个过程到底是如何完成的,因为它是通过第三方完成的。我知道它已经被成功地加密了,因为我使用了在线工具,比如:似乎已经成功地解密了数据。谢谢!我在一个更新版本的PHP上尝试了这段代码,它成功了。我创建了另一个问题,试图将此代码转换为等效的openSSL命令行:。如果你认为你能帮忙,请看一看。
$result = openssl_decrypt($data,'des-ede', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);