【发布时间】:2016-12-23 19:16:23
【问题描述】:
我正在尝试在命令行中重新创建一些 openssl php 代码。我已经能够让以下 php 代码工作:
$key = 'aaaaaaaabbbbbbbbccccccccdddddddd';
$key = pack('H*',$key);
$data = 'b5057bbc04b842a96144a0f617f2820e';
$data = pack('H*',$data);
$result = openssl_decrypt($data,'des-ede', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);
我正在处理的命令(Ubuntu)
openssl des-ede -in encrypted-data.txt -out decrypted-data.txt -d -K aaaaaaaabbbbbbbbccccccccdddddddd -nopad
钥匙
我用来解密的密钥是十六进制值:aaaaaaaabbbbbbbbccccccccdddddddd。这个密钥可以作为十六进制传递吗?
加密数据
我在 encrypted-data.txt 文件中传递的加密数据是十六进制值:b5057bbc04b842a96144a0f617f2820e。数据应解密为Test123123。我尝试将加密数据转换为二进制文件并将其传递给 .bin 文件,但没有成功。在传递之前是否应该将这些数据转换为其他格式?
参数
我相信我在将 php 参数 OPENSSL_RAW_DATA 和 OPENSSL_ZERO_PADDING 转换为我的命令行调用时遇到了问题。我发现了选项-nopad,但不确定它是否等同于php中的选项
【问题讨论】:
-
这很好用。您示例中的关键是错误的。
-
@pvg 您的意思是密钥需要采用其他格式吗?我可以在 php 中使用该密钥解密数据。
-
不,我的意思是您确实输入错误。你有一个错字。从 php 代码中剪切并粘贴密钥。
-
感谢您的捕获,但仍然无法正确解密。你认为我以正确的格式传递数据吗?
-
我不知道你作为数据传入了什么。我能够使用您拥有的确切调用(和正确的密钥)解密它
标签: php encryption 3des tripledes php-openssl