perl中的openssl解密密码短语问题

perl中的openssl解密密码短语问题,openssl,Openssl,我很难分析在perl中传递系统调用时如何处理参数 当以下代码运行时 $password = ‘t5!rEDRkbYG@BJd!’; system("pv myfile.aes | openssl enc -d -pass pass:$password -rc4 | md5sum > Decrypted.md5"); 代码在不同的系统上产生不同的哈希值 在崩溃的原始系统上,运行了类似的代码,文件被成功地加密和解密 在另一台机器上执行代码时,代码会运行,但明文无效。 我们认为问题在于密码中的

我很难分析在perl中传递系统调用时如何处理参数

当以下代码运行时

$password = ‘t5!rEDRkbYG@BJd!’;
system("pv myfile.aes | openssl enc -d -pass pass:$password -rc4 | md5sum > Decrypted.md5");
代码在不同的系统上产生不同的哈希值

在崩溃的原始系统上,运行了类似的代码,文件被成功地加密和解密

在另一台机器上执行代码时,代码会运行,但明文无效。 我们认为问题在于密码中的特殊字符。我们可以继续解决这个问题,但需要知道pass参数中实际传递了什么,才能解密旧系统中的一些数据

认为这与shell如何解释密码有关。任何帮助都将不胜感激

谢谢


马克,谢谢你的回复

代码在Ubuntu11.10中运行,bash是shell

我已经尝试以交互方式解密,并在提示时键入密码,因此应该传入感叹号,但我将尝试转义感叹号,以防万一

这似乎更像是一个双重解析问题

我回显了密码,得到了以下信息

echo t5!rEDRkbYG@BJd!
巴什:!rEDRkbYG@BJd!: 未找到事件

(为了以防万一,我尝试将上面的错误文本作为密码。)

用perl打印“t5!rEDRkbYG@BJd!”; 给t5!雷德克比格!。然后,bash必须在调用openssl时再次解析密码短语。如果我回应t5!雷德克比格

echo t5!rEDRkbYG! 
我得到“bash:!rEDRkbYG!:未找到事件”

我正在运行一些密码测试,但在此期间,是否有人对如何查看所有解析的结果有任何想法


马克,再次感谢你

我会怀疑这个感叹号。也许可以尝试在密码中转义它们:
$password='t5\\\!红色…'