如何透過命令列使用 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

相關內容