我正在寫一個android密碼管理器應用程序,我想存儲主密碼的某處,但我不知道在哪裏。我是否應該使用我選擇的硬編碼密碼對用戶給予的主密碼進行加密,然後將其存儲到數據庫中?還是我應該做點別的?哪裏可以存儲密碼?
回答
你不應該存儲未加密的密碼。
對於密碼,您無法安全地進行加密(因爲您必須將解密密鑰存儲在某個地方),您應該只存儲它的不可逆散列。
用這種方法,您可以在用戶提供密碼時將密碼與散列進行比較。如果匹配,則可以使用給定的密碼對存儲的用戶:密碼對進行解密。
PS:不要忘記鹽散列和please do it properly。
不,不,一千次沒有。
如果您可以查看GPLv2代碼,請查看KeePass源代碼。
主密碼變爲密鑰(基於密碼的密鑰派生),並且該密鑰用於加密和解密單個數據片段(單個密碼)。
因此,該過程與此類似: 1.關閉任何類型的交換到磁盤,您可以關閉。詢問用戶主密碼。
轉動主密碼到內存中的僅主加密密鑰,通過使用類似PBKDF2(HMAC-SHA-256,主密碼,存儲的隨機鹽*,2000000,256) - PBKDF2也稱爲RFC2898和PKCS#5。 HMAC-SHA-256是哈希函數。主密碼是用戶輸入的任何內容 - 這絕不會以任何形式保存!存儲的隨機鹽是一個64位或更大的加密隨機值,只要選擇一個新的主密碼,就會生成一個隨機值,並且保存而不是保存任何形式的主密碼。 2000000是我們要運行HMAC的次數,它被存儲並且應該是用戶可選擇的 - 這應該等於你可以忍受的等待的次數(KeePass有一個功能來對它們進行基準測試,看看有多少次需要1秒 - 我建議增加到4或5秒)。 256是所需輸出的位數 - 在這種情況下,我假設您將使用CAMELLIA-256或AES-256來加密您的密碼(只需匹配您的加密功能對密鑰使用的位數) 。 是的,可以使用scrypt或bcrypt。
檢查主密碼是否正確:如果我們正在使用現有主密碼進入現有數據庫,請使用該內存中密鑰來解密某些固定數據,如「默認」密碼。如果值解密爲您所期望的值,則輸入的主密碼正確,否則主密碼錯誤和/或數據庫已損壞。如果我們正在啓動新數據庫或更改主密碼,請加密該「默認」密碼並存儲加密值。
使用主加密密鑰來解密URL的用戶名,備註和其他非密碼數據。
使用主加密密鑰僅根據用戶的請求(但僅限用戶請求的確切密碼)對現有密碼進行解密,然後一旦完成或定時器運行就用隨機垃圾覆蓋數據出。使用所述主加密密鑰加密新密碼。
一旦用戶完成或定時器用完,用隨機垃圾覆蓋所有變量(尤其是內存中唯一的主加密密鑰)。
注意你存儲:
- 迭代
- 數鹽
- 加密僅用於驗證主密碼是否正確
- 加密的用戶名 「固定」 的密碼, URL,筆記等
- 加密個人網站密碼
你永遠不會存儲主密碼或它的散列。您永遠無法比較主密碼,哈希值,甚至是生成的主加密密鑰。您只需掌握主密碼並將其轉換爲主密鑰,然後使用該密鑰對數據進行加密或解密 - 已知數據(「固定」密碼)可讓您查看該密鑰是否提供了預期結果。當您知道主密碼正確時,未知數據(用戶輸入和關注的所有內容)也會被加密或解密。
- 1. 在哪裏存儲jasypt解密密碼
- 2. Webmin在哪裏存儲根MySQL密碼?
- 3. 運行時在哪裏存儲密碼?
- 4. Netbeans 7在哪裏存儲FTP密碼
- 5. laravel密碼鹽在哪裏存儲?
- 6. ModX Evolution:SMTP密碼存儲在哪裏?
- 7. 設計存儲密碼在哪裏?
- 8. 在哪裏存儲密碼鹽以及如何獲取它
- 9. 我們在哪裏存儲密鑰/密碼/鹽進行加密?
- 10. Bitbucket - 在哪裏可以找到存儲庫SSH密鑰?
- 11. 存儲強名密鑰的密碼在哪裏?
- 12. Phonegap db加密:我應該在哪裏存儲密碼?
- 13. 哪種編碼用於存儲可解密的密碼?
- 14. 哪裏可以放置代碼配置永久存儲遷移
- 15. Firefox在哪裏存儲保存的密碼?
- 16. git克隆密碼在哪裏存儲或緩存?
- 17. Firefox在哪裏存儲保存的密碼?
- 18. HMAC/Javascript - 在哪裏存儲祕密?
- 19. SSL對稱密鑰存儲在哪裏?
- 20. 哪裏存儲機密信息?
- 21. SecKeyGeneratePair在哪裏存儲密鑰對?
- 22. 我可以存儲散列密碼嗎?
- 23. 要使用哪種加密算法以及在哪裏存儲密鑰?
- 24. 即使我沒有存儲密碼,程序是否可以存儲密碼?
- 25. 我在哪裏可以找到Vigenere密碼的Java源代碼?
- 26. 使用WebPBEConfigServlet的jasypt web配置 - 密碼存儲在哪裏?
- 27. Android模擬器在哪裏存儲密碼?
- 28. 哪裏存儲rundeck ssh login的密碼文件?
- 29. 在哪裏存儲用戶名和密碼?
- 30. BizTalk中存儲的適配器密碼在哪裏?
密碼管理器的整個想法不是存儲主密碼嗎?您將個人密碼與主密碼一起存儲爲加密密鑰。主密碼永遠不會被存儲。 – Wolph 2011-04-10 13:43:53