首頁  >  文章  >  如何使用密碼安全地將金鑰儲存在 AndroidKeyStore 中?

如何使用密碼安全地將金鑰儲存在 AndroidKeyStore 中?

WBOY
WBOY轉載
2024-02-10 19:15:08498瀏覽

php小編百草為您帶來了關於如何使用密碼安全地將密鑰儲存在AndroidKeyStore中的指南。在行動應用開發中,保護金鑰的安全性至關重要。 AndroidKeyStore提供了一種可靠的方式來儲存金鑰,以確保其不會被惡意應用或攻擊者取得。本指南將介紹如何使用密碼加密金鑰,並將其安全地儲存在AndroidKeyStore中,以提供最高等級的安全性保護。無論您是新手還是有經驗的開發者,都能輕鬆跟隨本指南一步步實現這一目標。讓我們開始吧!

問題內容

我正在嘗試建立一個允許使用者儲存密碼的應用程式。現在,我允許用戶透過兩種方式加密他們的密碼,第一種是生物識別,另一種是密碼

我能夠透過在 AndroidKeyStore 中建立金鑰並在建立金鑰時設定 setUsetAuthenticationRequired(true) 來實作 biometrics 加密,然後使用 BiometricsManager 授權密碼。

但是,我不確定如何實作密碼一。我嘗試尋找 PBE 加密,但 Android 文件中沒有太多內容。對於這種情況,最安全且最好的解決方案是什麼?如果有任何相同的鏈接,我將不勝感激:)

(注意:如果我使用 PBE 加密,並且將加密資料(使用者名稱和密碼的多個)儲存在 RoomDB 中,如何才能 我在下次應用程式運行時檢查密碼是否正確,資料庫中是否沒有任何內容可供解密和測試)

我還找到了一種建立金鑰,然後將金鑰儲存為條目並使用 https://developer.android.com/reference/java/security/KeyStore.PasswordProtection 來保護條目的方法。讓我知道這是否是一個足夠安全的解決方案,或者是否有更好的解決方案。

謝謝!

解決方法

如果您想在 Room 中儲存密碼,您需要執行雜湊函數,然後儲存密碼的雜湊值。無論您的密碼有多長,雜湊值都是固定大小的。

要將輸入密碼與資料庫中儲存的密碼進行比較,您將輸入進行雜湊處理,並將其與資料庫中儲存的雜湊值進行比較。因為如果你對同一個字串應用雜湊函數,你會得到相同的結果。如果至少有 1 個符號錯誤 - 產生的雜湊值將完全不同。

您可以檢查這個並使用PBKDF2演算法。有關如何選擇哈希函數以及不使用什麼函數的更多詳細信息,請參見此處

以上是如何使用密碼安全地將金鑰儲存在 AndroidKeyStore 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除