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

时间:2016-12-23 19:16:24

标签: php encryption 3des tripledes php-openssl

我试图在命令行中重新创建一些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_DATAOPENSSL_ZERO_PADDING转换为命令行调用时遇到问题。我发现了选项-nopad,但我不确定它是否等同于php

中的选项

1 个答案:

答案 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%