2011-10-06 58 views
0

我正在學習做適當的加密實現,我認爲這是一個練習,我會創建一個加密的文本編輯器。如何在基於密碼的加密中處理salt

我的第一次嘗試使用用戶提供的密碼的SHA-512散列作爲密鑰,它的功能很好。儘管我將這個IV存儲在文件的頭文件中,但沒有受到保護,這讓我很擔心。

然後我閱讀stackoverflow,我應該使用SecretKeyFactory(我使用Java)來做PBE,現在我另外需要提供一個鹽。所以現在我也將鹽儲存在標題中,但這似乎破壞了鹽的全部用途。那麼這應該如何工作?當我保存艾麗絲時,她會爲她的文件選擇一個密碼,我是否應該說「在這裏,記住隨機數字和密碼。」?我希望生成的文件能夠通過電子郵件發送給Bob,所以鹽不能存儲在本地。

正如我的應用程序所顯示的那樣,IV和鹽都是公開的。我希望我的用戶只需在密碼保護時將他們的文件發送給Bob時知道密碼,但我找不到任何如何完成的示例。

感謝您的幫助!

回答

0

將IV與數據一起存儲是安全的,也就是說如何使用IV。你的方法沒問題,選擇一個分組密碼,使用密碼塊鏈接和一個IV,然後你就不在了。

0

有許多方法可以通過密碼創建密鑰和iv,但更常見的方法之一涉及使用SHA-1的HMAC,在考慮一些鹽和其他因素的算法中,構建足夠的位混合鍵和四。

技術標準是PKCS#5 v2.0 PBKDF2算法,OpenSSL爲其實現了一個C接口的方法,可以做到這一點,但據我所知,沒有命令行方法。