使用零填充和原始数据从命令行中使用OpenSSL DES-EDE进行解密



我正在尝试在命令行中重新创建一些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。可以通过十六进制吗?

可以通过此键

加密数据

我在加密data.txt文件中传递的加密数据是十六进制值: b5057bbc04b842a96144a0f617f2820e。数据应解密为Test123123。我已经尝试将加密数据转换为二进制文件,并将其通过.bin文件传递而没有成功。通过之前,应该将此数据转换为其他格式吗?

参数

我相信我正在将PHP参数OPENSSL_RAW_DATAOPENSSL_ZERO_PADDING转换为我的命令行调用问题。我已经发现了选项-nopad,但是不确定它是否等同于PHP

中的选项

我仅在这里包括这个问题,因为我无法格式化评论,因此应该关闭和删除此问题。这将验证该过程与命令行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%    

最新更新