perl中的openssl解密密码短语问题
我很难分析在perl中传递系统调用时如何处理参数 当以下代码运行时perl中的openssl解密密码短语问题,openssl,Openssl,我很难分析在perl中传递系统调用时如何处理参数 当以下代码运行时 $password = ‘t5!rEDRkbYG@BJd!’; system("pv myfile.aes | openssl enc -d -pass pass:$password -rc4 | md5sum > Decrypted.md5"); 代码在不同的系统上产生不同的哈希值 在崩溃的原始系统上,运行了类似的代码,文件被成功地加密和解密 在另一台机器上执行代码时,代码会运行,但明文无效。 我们认为问题在于密码中的
$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\\\!红色…'直接在命令行上,我不得不逃离它们。虽然我用一个类似于您所展示的命令从perl中尝试了它,但这并不重要。但它可能是依赖于外壳的。另一方面,您可以添加操作系统信息和您正在使用的shell。感谢帮助标记。我发布了一些附加信息。您是否尝试在perl脚本中转义感叹号?“未找到事件”是我直接在bash shell中键入命令时得到的结果。