Bash 在不同的计算机上加密和解密密码

Bash 在不同的计算机上加密和解密密码,bash,openssl,Bash,Openssl,目前,我正在编写一个小脚本,它将加密密码存储在配置文件中,并在需要使用密码时对其进行解密。我知道这不是最安全的方法,它只会让人们看不懂。我已使用以下密码加密我的密码: echo PasswordToEncrypt | openssl enc -aes-256-cbc -a -salt -pass pass:PasswordForEncryptAndDecrypt 现在我得到了我的加密密码,并试图解密它,它工作正常。但在我尝试在另一台计算机上解密密码后,它再也无法解密了。此外,如果我再次加密密码

目前,我正在编写一个小脚本,它将加密密码存储在配置文件中,并在需要使用密码时对其进行解密。我知道这不是最安全的方法,它只会让人们看不懂。我已使用以下密码加密我的密码:

echo PasswordToEncrypt | openssl enc -aes-256-cbc -a -salt -pass pass:PasswordForEncryptAndDecrypt

现在我得到了我的加密密码,并试图解密它,它工作正常。但在我尝试在另一台计算机上解密密码后,它再也无法解密了。此外,如果我再次加密密码,它看起来与第一台计算机上的加密密码不同


我的问题是:有没有任何方法可以在不同的计算机上使用openssl加密和解密相同的密码?这样我就可以在计算机a中加密密码并在计算机B中解密?

如果你加密一个文件并在另一台计算机上解密,解密的数据将是相同的。否则加密就没用了。我认为您看到了不同的输出,因为您忘记了提供-md选项

要加密:

$ echo TEST | openssl enc -aes-256-cbc -md md5 -salt -pass pass:my_password > enc.bin
并解密:

$ cat enc.bin | openssl enc -d -aes-256-cbc  -md md5 -pass pass:my_password
TEST
只是为了让您可以选择使用密钥:

$ openssl genrsa -out key.priv 4096
$ openssl rsa -in key.priv -pubout -out key.pub
$ echo TEST | openssl enc -aes-256-cbc -md sha256 -salt -pass file:key.pub > tmp.bin
$ cat tmp.bin | openssl enc -d -aes-256-cbc -md sha256 -pass file:key.pub > tmp.txt
TEST

此外,如果我再次加密密码,它看起来与第一台计算机上的加密密码不同。这很正常。即使在同一台计算机上加密两次,结果也会不同。这与您遇到的问题无关。您的工作原理是OpenSSL只能解密在同一台机器上加密的数据吗?事实并非如此。毫无疑问,这是一个错误,你的脚本。它在一台机器上运行的事实并不能保证脚本是正确的。我在最新的Ubuntu版本上对它进行了加密,并试图用raspian在旧的raspberry pi 2上对它进行解密,这可能是个问题吗?我在某个地方读到,不同的OpenSSL版本可能会导致问题?这很可能是问题所在。例如,-md选项从md5更改为sha256。在OpenSSL 1.1.1的最新版本中,希望您添加-iter 1000-pbkdf2,这将不适用于1.1.0。解决方案对您有效吗?使用-md选项可以设置消息摘要。如果加密时没有-md选项,则当前默认为sha256。在旧版本中,它默认为md5。它们是不同的不兼容哈希函数,会导致严重的解密错误。