2011-06-25 61 views
0

我正在開發一個android應用程序,需要存儲多個默認密碼。在android中存儲不同的密碼

根據輸入的密碼,用戶將顯示不同的表格進行填充。

如果默認密碼的數量多於10到20,那麼存儲默認密碼的最佳解決方案是什麼?

+0

你是什麼意思的「最好」? – Mat

+0

你想知道使用什麼樣的加密? –

回答

2

我看到兩種可能性:

  • 哈希所有密碼(!與鹽一起)和散列存儲在正常SQLite數據庫。每次用戶輸入密碼時,您都會生成散列(使用salt)並查看數據庫中是否有密碼哈希。如果否,沒有密碼是正確的。如果是,您可以查看哪些密碼匹配,並轉發到正確的表單活動。請注意,用戶輸入密碼時只需執行一次散列,因此您可以使用慢散列算法。
  • 將密碼存儲在(AES-)加密數據庫中,或以正常未加密數據庫中的加密形式存儲密碼。然後,您可以始終計算存儲的密碼的純文本格式,以便於比較。這種方法的缺點是您必須在您的應用程序中存儲密鑰(密鑰或密碼)(或每次從服務器獲取密碼),這很容易通過反編譯檢索 - 如果這些是敏感密碼或您保護敏感數據,這將是一個不行。

我寧願第一種可能性。此外,我不會使用常見的MD5作爲散列算法,但至少使用SHA-512或更好的bcrypt。這是一個很好的線索,解釋了爲什麼以及如何在Android上做到這一點:Stackoverflow-Thread。基本上,你必須認爲有人會檢索sqlite數據庫,如果使用了快速哈希算法(例如MD5),那麼很容易找到弱密碼(在彩虹表的幫助下)。密碼鹽有幫助,但僅針對google attacks。 Bcrypt哈希(+ salt!)生成速度較慢(這很好),甚至使得弱密碼難以破解。

0

在android中有很多可用的存儲選項。請參閱this

如果數據有限,則可以選擇偏好設置。