Sha-256

對於 SHA-256 的雜湊計算,是並行計算還是串列計算?

  • April 15, 2019

我正在嘗試用 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

https://en.wikipedia.org/wiki/Merkle_tree

該算法以一系列命令式語句的形式呈現,按照它們要執行的順序給出。所以e = d + T_1使用d上一輪的值和T_1目前輪的值。

如果有幫助,這是我的簡單 Java 實現,它嚴格遵循規範:https ://github.com/dlubarov/java-sha/blob/master/src/main/java/ReferenceSha256.java#L104

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