2012-01-20 26 views
5

如何欺騙OpenSSL命令行工具的-in參數以便從字符串獲取數據而不是文件?OpenSSL命令行工具:字符串「-in」參數

通常情況下,我可以用echo命令做到這一點:

echo 'test string 1' | openssl enc -aes-256-cbc -a -salt -pass pass:mypassword 

有沒有一種方法,我可以不用echo和管?類似於-pass pass:的說法?

在此先感謝!

回答

2

我找到了一種方法去解決這個!而不是將所有的OpenSSL有一個互動模式之前和之後的,它可以在不輸入運行命令:

openssl enc -aes-256-cbc -a -salt -pass pass:mypassword 

和OpenSSL將等待數據進行加密。這對流也是有用的!

然後,你要加密併發送在終端一EOT(發送結束)的字符串或數據類型是平時^DControl+D這將輸出到stdout加密字符串!

希望這可以幫助別人有一天!

4

如果你的shell是bash和你的操作系統支持的話,你可以使用process substitution

openssl enc -in <(echo 'test string 1') -aes-256-cbc -a -salt -pass pass:mypassword 
+0

嗨,它從我的終端工作正常,問題是我在Objective-C中使用NSTask來調用該工具,並沒有在那裏工作......謝謝。 – TCB13

+0

您可以使用「/ bin/bash -c ...」將命令提供給bash。這有其他問題(導致安全漏洞的shell元字符等),但它會讓進程替換工作。 – Nemo

+0

是......「安全漏洞」我在這裏使用OpenSSL ...所以你可能明白我關心有一些安全性。 (至少由NSPipe提供的安全性)。謝謝。 – TCB13