我正在創建一個應用程序,要求用戶註冊一個遠程服務器,但我想在發送它之前散列它們的密碼以存儲在我的數據庫中。在Android應用程序中散列密碼的一些好方法是什麼?
我嘗試過使用jBCrypt庫,但它在散列時創建了一個漫長的掛起時間。還有其他的選擇嗎?散列密碼的最佳(最安全)方法是什麼,而不會造成明顯的掛起?
我正在創建一個應用程序,要求用戶註冊一個遠程服務器,但我想在發送它之前散列它們的密碼以存儲在我的數據庫中。在Android應用程序中散列密碼的一些好方法是什麼?
我嘗試過使用jBCrypt庫,但它在散列時創建了一個漫長的掛起時間。還有其他的選擇嗎?散列密碼的最佳(最安全)方法是什麼,而不會造成明顯的掛起?
你的方法似乎是錯誤的。除非你有一些特殊的要求,通常的方式做,這是下面的(不是Android的特異性,對於任何Web應用程序):
總之,你應該在服務器上做哈希,而不是在Android設備上。
我目前正在做的是: 註冊:獲取密碼輸入,哈希,發送到服務器,存儲它。 登錄:獲取密碼輸入,哈希值,將其發送到服務器,比較它 你是說我應該使用SSL發送純文本密碼,然後將它散列在服務器上?這不需要我的域的SSL證書嗎? – WilHall
是的。請注意,你現在正在做的事情是不安全的:如果有人攔截了流量,他們會得到散列,而不是實際的密碼,但他們並不需要它。只要攻擊者擁有散列,他們就可以在不知道密碼的情況下將其發送到服務器併成功登錄。請使用SSL。 –
不惜任何代價避免保存第三方密碼。保存它們被認爲是一種網絡釣魚。嘗試保存認證令牌,而不是使用OAuth等方法獲得的原始密碼。
如果您確實需要將密碼發送到Web服務器上的數據庫,請使用HTTPS。這將確保通過電線進行安全的加密。然後您可以根據需要在數據庫中加密密碼。此方法還可以確保您的加密機制不在設備本身上,而且可能更容易受到危害。
爲什麼不使用ssl? –
@ DanielA.White:這不需要我有一個有效的SSL證書嗎?我目前沒有其中之一。 – WilHall
@WilHall更不用說,SSL證書很貴。 –