2017-09-01 52 views
-1

我有後端有密碼存儲與哈希-A(單程),我想它轉換爲哈希-B(單程)。我想刪除散列-A密碼已刪除並更改爲散列-B如何更改我的應用程序的密碼散列?

在後端我下次登錄時只需更改密碼散列-B,但真正的問題是在應用程序中,我的應用程序通過散列-A發送密碼,我可以改變它,但舊的應用程序將繼續面臨同樣的問題,我不能簡單地推出舊應用程序。

它實際上不可能在舊的應用程序中有任何變化。

什麼是最好的方式沒有在我的後端保持哈希-A

+3

不幸的是,我認爲不改變舊的應用程序是不可能的。有一個交換哈希算法的最佳實踐,但我所知道的只有當你可以更改客戶端時纔有效。 –

回答

1

通常使用帶加強的密碼哈希來避免對數據庫進行暴力強制或字典攻擊。如果攻擊者竊取服務器或數據庫,那麼將很難檢索密碼,因爲salt和迭代計數會爲密碼本身的強度增加額外的防禦級別。

因此,將迭代(工作因子)和可能的附加鹽字節添加到已存儲的散列值是有意義的。唯一的要求是真正的原始散列沒有被完全破壞(即是一個密碼安全的散列)並且具有足夠大的輸出。

你可以做的是向新改變的哈希值添加某種標識符 - 協議標識符和可能的參數。這樣,即使在線也可以更改散列值,選擇直接比較 - 在​​您的情況下 - 或者在服務器上添加工作以執行B散列。

你不能破解這個,因爲hashing-A值不再可用於攻擊者,並且沒有辦法將散列-B逆轉成散列-A。當然,在運輸過程中保持密碼或散列A安全並且仍然非常重要。但是你可以簡單地部署TLS 1.2來避免這種情況。