Salt

在沒有數據庫的情況下散列使用者密碼來儲存鹽

  • September 14, 2018

我正在建構一個 Android 應用程序,它將純粹在使用者設備上本地執行,沒有伺服器。它有一個我想用使用者密碼加密的數據庫,它需要一個 64 字節的密鑰。我考慮過這兩種方式:

  1. 使用 bcrypt,但這並沒有給我 64 個字節
  2. 使用 SHA512,它的暴力破解速度要快得多

兩者的問題是我沒有可靠的地方來儲存隨機鹽。“攻擊場景”將是某人從手機中提取數據庫文件並使用彩虹表進行解密。

我是不是該:

  1. 無論如何添加靜態鹽?
  2. 使用 bcrypt 並用 0 填充缺失的字節,因為更重要的是生成彩虹表很難?
  3. 使用 SHA512?
  4. 完全不同的東西?

順便說一句,彩虹桌已經成為過去。它們是時間/空間的權衡,目前最合理大小的彩虹表可以由嚴重的破解者在幾秒鐘內生成——也就是說,它們沒有用。當兩個人擁有相同的密碼時,仍然建議使用 Salt 隱藏這一事實 - 但您沒有使用散列來儲存密碼,因此除非您將生成的密鑰散列儲存在某處,否則 salt 無濟於事(您只有加密的數據庫,而不是密碼的雜湊值)。人們需要一個彩虹表來儲存某些集合和所有可能的數據庫中的所有可能密碼(在某些限制內)。儲存要求將是瘋狂的。如果我正確理解設置,我不會擔心彩虹表。

引用自:https://crypto.stackexchange.com/questions/62326