2012-05-12 30 views
2

我正在使用Openssl 0.9.8k,使用我項目中的EVP API來使用AES256CBC加密/解密數據。Openssl加密庫中是否有函數來安全地輸入密碼?

現在我正在使用fgets(pwd,pwd_len,stdin)用戶的密碼輸入。

openssl是否有任何可用的功能,有助於安全地輸入密碼。 我嘗試在網上搜索,但找不到任何(openssl文檔本身是不夠的)

任何建議或指向任何文檔將不勝感激。

注::如果沒有的功能,例如使用OpenSSL,可有人請建議我可以在使用與fgets,這樣我可以寫標準輸入取密碼在我目前的做法被利用的可能存在的安全漏洞我自己的自定義功能。

非常感謝,如果您使用的PEM程序打開一個密碼保護的文件

+0

由於該問題是終端編程的問題之一,並未被OpenSSL所覆蓋,所以我將其標記爲[C命令行密碼輸入]的副本(http://stackoverflow.com/questions/1786532/c-command -line-password-input)和[在不使用getpass的情況下在C中獲取密碼](http://stackoverflow.com/questions/1196418/getting-a-password-in-c-without-using-getpass-3)。 –

回答

2

的OpenSSL將提示用戶輸入密碼 - 它在http://www.openssl.org/docs/crypto/pem.html描述(搜索「提示」)。這些函數還允許您指定執行提示的回調例程;默認回調是提示用戶的回調。

我找不到默認回調例程的任何文檔 - 我認爲您需要在代碼中搜索。但如果你只是想讀一個受密碼保護的文件,那麼上面的內容可能就足夠了。

+0

感謝您的答覆..我會研究這一點。在通過EVP api源代碼時,我在openssl/crypto/evp中找到了一個文件EVP_key.c,其中我找到了3個函數EVP_set_pw_prompt()EVP_get_pwd_prompt()和EVP_read_pw_string()..但找不到任何文檔對他們的任何想法..非常感謝 – abhi

+0

不是真的。我猜他們是相似的(設置允許回調被設置)。也許read_pwd_string是你需要的?最好只讀代碼......(有時用openssl寫一個小程序調用例程,然後在調試器中逐步完成 - 這有助於解決不同指針混亂的含義)。 –

+0

哦謝謝一噸。我將開始爲它編寫代碼..雖然Google搜索後,這是最合乎邏輯的鏈接,我可以把它放在http://www.umich.edu/~x509/ssleay/evp_passwd.html – abhi