【问题标题】:Decrypting using openssl des-ede from the command-line with zero padding and raw data从命令行使用 openssl des-ede 解密,填充零和原始数据
【发布时间】: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_DATAOPENSSL_ZERO_PADDING 转换为我的命令行调用时遇到了问题。我发现了选项-nopad,但不确定它是否等同于php中的选项

【问题讨论】:

  • 这很好用。您示例中的关键是错误的。
  • @pvg 您的意思是密钥需要采用其他格式吗?我可以在 php 中使用该密钥解密数据。
  • 不,我的意思是您确实输入错误。你有一个错字。从 php 代码中剪切并粘贴密钥。
  • 感谢您的捕获,但仍然无法正确解密。你认为我以正确的格式传递数据吗?
  • 我不知道你作为数据传入了什么。我能够使用您拥有的确切调用(和正确的密钥)解密它

标签: php encryption 3des tripledes php-openssl


【解决方案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%    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-14
    • 2011-12-13
    • 1970-01-01
    • 2012-06-25
    • 2014-01-08
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    相关资源
    最近更新 更多