使用零填充和原始数据从命令行使用 openssl des-ede 进行解密

Decrypting using openssl des-ede from the command-line with zero padding and raw data

我正在尝试在命令行中重新创建一些 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%