如何通过命令行使用密码参数对 openssl 进行解密

如何通过命令行使用密码参数对 openssl 进行解密

因此,通过命令行参数传递密码并不是最安全的做法。也就是说,openssl 的文档让我困惑于如何将密码参数传递给 openssl 命令。

这就是我想做的事情

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d

然后会提示输入用于解密的密码。我搜索了 openssl 文档和互联网,试图找到答案,如果我只是想给命令提供密码,而不尝试将密码回显到文件。我尝试添加带引号-pass:somepassword-pass somepassword不带引号的,但都无济于事。

我终于找到了答案,并在其他一些论坛上看到人们也有类似的问题,所以我想在这里为社区发布我的问题和答案。

注意:我使用的是 openssl 版本 0.9.8y

答案1

文档对我来说不是很清楚,但是它给出了答案,难点在于看不到示例。

操作方法如下:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword

请注意,命令行命令语法-pass后面总是有一个空格,然后是您提供的密码类型,即pass:普通密码,然后是冒号后没有空格的实际密码。

此外,文档还指定您可以通过执行以下操作来提供其他密码源:

  • env:somevar从环境变量中获取密码
  • file:somepathname从文件第一行获取密码pathname
  • fd:number从文件描述符编号获取密码。
  • stdin从标准输入读取

现在我已经写下了这个问题和答案,一切似乎都很明显。但这确实需要一些时间才能弄清楚,而且我看到其他人也花了类似的时间,所以希望这可以减少时间并更快地为其他人解答!:)

对于 OpenSSL 1.0.1e,要使用的参数是-passin-passout。因此,此示例为:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword

答案2

我在示例中使用-passin-passout为两个文件设置密码:

openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321

其中123321是密码

答案3

目前 Ubuntu 14.04 LTS 附带 openssl 1.0.1f-1ubuntu2.16

在此版本中要使用的参数是-k

例子:

openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword

相关内容