Sha-256
具有不同雜湊值的 SHA 算法
我是雜湊密碼學的新手。我正在嘗試建構 sha256 硬體加速器。我正在考慮使用不同的雜湊值來優化性能。我正在嘗試獲取前一段時間已經計算的自定義雜湊初始值。這種方法是否有效,我會遇到什麼問題。
謝謝
我假設你是這樣想的:
我正在散列一系列共享相同前綴的值 $ X $ (長度為 64 字節的倍數),也就是說,您正在計算:
$$ \begin{gather*} \operatorname{SHA256}(X \mathbin\Vert A) \ \operatorname{SHA256}(X \mathbin\Vert B) \ \vdots \ \operatorname{SHA256}(X \mathbin\Vert B) \end{gather*} $$ 你想知道“我可以在 X 之後立即計算內部 SHA256 狀態,然後在處理字元串時將其用作“初始 SHA256 狀態” $ A, B, \dots, Z $ ?
答:是的,絕對的。事實上,當需要這些類型的雜湊時,這是相當普遍的做法(這種情況比您預期的要多;例如,在計算 HMAC 時)。
我會遇到什麼問題?
您需要注意的一件事是在最後的 SHA-256 填充中的長度欄位;它需要包括整個消息的長度(包括 $ X $ ),而不僅僅是您剛剛處理的消息。