2010-08-27 41 views
1

我有一個與Google App Engine(GAE)後端進行通信的Android應用程序。對於身份驗證,我有一個用戶名和密碼,但是我不想將純文本密碼存儲在客戶端上,並以純文本格式在不安全的通道上傳輸。所以當用戶第一次輸入密碼(註冊或登錄)時,我正在考慮對密碼進行哈希處理,並將其存儲在手機以及GAE數據庫中。但是,我不確定使用哪個加密哈希函數,目前正在考慮sha1(),以及是否需要執行其他操作或僅僅使用sha1(plainTextPassword)爲GAE <> Android通信加密明文密碼

有什麼建議嗎?

回答

5

如果您的意思是您將密碼的哈希從客戶端發送到服務器,並將其與存儲在服務器上的密碼的哈希值進行比較,則這不安全。

攔截散列的任何人都可以使用它來登錄到您的應用程序。對於您的應用程序,散列實際上是一個密碼。密碼認證需要私人通道給認證的夥伴,例如SSH或TLS。

有人可能會爭辯說,至少有助於保護可能共享相同密碼的用戶的其他帳戶,但是一輪SHA-1無鹽會留下一個非常容易受到彩虹表和字典攻擊的密碼。使用PKCS#5中的密鑰派生函數來正確掩蓋密碼; 8個隨機字節的鹽和幾千次迭代對於PBKDF1是很好的參數。

+0

感謝您的回答。是的,我的意思是保護用戶的其他帳戶。將研究你寫的其他東西。 – znq 2010-08-28 21:59:10