Hash
我的 SHA-256 TableSalt 算法會放棄種子鹽嗎?
設置
我有一個值表,我需要為每個表單元格值計算一個加鹽雜湊。此外,我需要每個表格單元格的鹽是唯一且不可預測的。(我可以稍後解釋是什麼激發了這種需求,但現在我不想分散問題陳述的注意力。)
現在我不想在表中為每個現有列添加一個額外的列,只是為了儲存這個唯一的、每個單元格的鹽。所以我想到的一個簡單策略是首先為整個表生成一個秘密的、安全的隨機 32 字節序列,稱為R_32,然後對於任何給定的單元格計算其鹽值作為R_32的 SHA-256與單元格的連接行/列座標。在虛擬碼中,這看起來像
tableSalt(row, col) = SHA_256( R_32 + row + col )
這裡
+
的意思是字節串連接,而不是加法。(行/列座標分別表示為 8 字節值。)問題
在我的應用程序中,至關重要的是,上面的秘密種子雜湊R_32不能進行逆向工程,無論同一張表中有多少不同的單元鹽是已知的。上述
tableSalt
程序在這方面是否安全?
它安全嗎?是的,因為這個基本設置在其他地方使用,我不知道有任何實際攻擊。然而 SHA256 並不是最好的選擇。它的基本結構並沒有像我們想要的那樣混入後綴。HMAC 結構或簡單地使用具有海綿結構的 SHA3 會更好,但即使如所寫,我也不相信鹽會以可利用的方式相關。