Sha-256
對於 SHA-256 的雜湊計算,是並行計算還是串列計算?
我正在嘗試用 VHDL 編寫自己的 SHA-256 實現,它以並行執行方式執行
我一直使用它作為 SHA-256 算法的參考:https ://www.researchgate.net/file.PostFileLoader.html?id=534b393ad3df3e04508b45ad&assetKey=AS%3A273514844622849%401442222429260
在雜湊計算中,a、b、c、d、e、f、g、h、T1 和 T2 被計算 64 輪,這些值是並行計算還是順序計算?
例如,如果我們將迭代次數設為 10 的值 e e = d+T1 e 是從上一次迭代 9 中獲取 d 和 T1 的值,還是從本次迭代中剛剛計算的 T1 的值?
謝謝
SHA-256 有一個不容易並行化的基本建構塊。塊之間的 SHA-256 遵循 Merkle-Damgard 結構,需要按順序計算。您可以使用相同的壓縮函式建構樹形雜湊,這將是安全的並允許並行計算,但結果與 SHA-256 標準不一致。
https://en.wikipedia.org/wiki/Merkle%E2%80%93Damg%C3%A5rd_construction
該算法以一系列命令式語句的形式呈現,按照它們要執行的順序給出。所以
e = d + T_1
使用d
上一輪的值和T_1
目前輪的值。如果有幫助,這是我的簡單 Java 實現,它嚴格遵循規範:https ://github.com/dlubarov/java-sha/blob/master/src/main/java/ReferenceSha256.java#L104