openssl 加密在不同的机器上给出不同的输出

openssl encryption gives different output on different machines

我在不同的机器上使用相同的密码和相同的密码加密相同的消息,但每次的结果都完全不同。那么我怎样才能在另一台机器上解密这样的文件呢?

一个最小的例子:

echo "testmessage" > testfile
echo "mypwd" > pwdfile
openssl aes-256-cbc -a -A -salt -in testfile -out out -k pwdfile
cat out && echo

给出:

U2FsdGVkX1/vqur0facod4sMZs+ZT3i3yHe+DwAnV7o=

U2FsdGVkX18c6qnuSRrslmnneuDWAH1cp0UC4QyO5PI=

和其他机器上的其他变体

编辑

我也尝试了其他密码(bf、cast、des3,...),只有 base64 在其他机器上得到了相同的结果。然而,我需要解密在另一台机器上加密的 aes-256-cbc 消息。

这不是问题;每次加密的结果都会不同。解密就可以了;也跨不同的机器。

导致我出现问题的真正问题是密码文件的路径

openssl aes-256-cbc -a -A -d -salt -in out -out outd -k pwdfile && cat outd

会很好地把我的原始文件还给我;但是

openssl aes-256-cbc -a -A -d -salt -in out -out outd -k ./pwdfile && cat outd

失败 Bad decrypt;实际上并没有使用 pwdfile 的内容,而是 pwdfile 是密码。