我试图在命令行中重新创建一些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
答案 0 :(得分:1)
我只在此处包含此内容,因为我无法格式化评论,因此可能会关闭并删除此问题。这将验证该过程与命令行openssl
实用程序
pvg /tmp ➤ more e.php
<?php
$data = 'b5057bbc04b842a96144a0f617f2820e';
$data = pack('H*',$data);
echo $data;
pvg /tmp ➤ php e.php > in
pvg /tmp ➤ openssl des-ede -in in -out out -d -K aaaaaaaabbbbbbbbccccccccdddddddd -nopad
pvg /tmp ➤ cat out
Test123123%