Hash
SHA-512 比 SHA-256 快?
我得到了一個奇怪的結果,即SHA-512比SHA-256快50% 左右。我正在使用.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 字節之間)。