Hash

SHA-512 比 SHA-256 快?

  • October 20, 2021

我得到了一個奇怪的結果,即SHA-512SHA-25650% 左右。我正在使用.net和類。該程式碼類似於此處發布的程式碼,但我指的是考慮到記憶體的測試(從第二次讀取文件開始,它似乎已完全記憶體)。我已經對其進行了多次測試,結果相同。SHA512Managed``SHA256Managed

我的問題是:這是合乎邏輯的還是我的測試一定有問題?

這不一定是出乎意料的。32 位平台與 64 位平台可以產生顯著差異,以及您要散列的數據量。

$ uname -m
x86_64

$ openssl speed sha256 sha512
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
sha256           29685.74k    79537.52k   148376.58k   186700.77k   196588.36k
sha512           23606.96k    96415.90k   173050.74k   253669.59k   291315.50

如您所見,在我的 64 位機器上,SHA-512 在一次散列超過 16 字節的數據方面勝過 SHA-256。通常,一次散列的數據越多,性能提升就越大。

編輯:正如@MaartenBodewes 在評論中指出的那樣,還有 SHA-512/256 與普通 SHA-512 執行相同的計算(具有不同的初始值),但將輸出截斷為 256 位。在您需要更高的吞吐量但僅限於 256 位輸出的情況下,與簡單地將 SHA-512 的輸出截斷為 256 位相比,這是一個更好的選擇(由於 IV 不同)。或者,如果您真的需要更高的吞吐量,BLAKE2b 是一個出色的加密雜湊,它速度極快,並且本機支持任意大小的輸出(1 到 64 字節之間)。

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