SHA-256 實現的速度有多快?
我正在尋找高速 SHA-256 實現,特別是低延遲的實現;也就是說,從送出消息塊到產生輸出(或內部狀態)之間的時間。
我用Google搜尋過,我發現最快的似乎需要大約 70 納秒;有人知道更快的事情嗎?
現在:
- 我對並行實現不感興趣(顯然每 70 納秒可以做超過 1 個雜湊);我正在專門尋找一個單一的高速雜湊。
- 一個 ASIC 實現(或者甚至是給出一個合理的大綱來說明它的速度的提議)將是完全可以接受的。
- 我們可以假設原像適合單個 SHA-256 塊(或者我們只是在執行壓縮功能本身)。
- 回答這個問題的另一種方法是“我們可以多快在單個大消息上計算 SHA-256”;我們能做一些比大約 1GByte/秒更快的事情嗎?
- 我特別詢問了 SHA-256,但是如果有人有類似的東西,SHA-3 或 AES,我也有興趣聽到。
謝謝!
Ryzen 支持SHA-256 的特殊指令,根據eBACS(圖表)實現長消息的 1.9 cpb。假設 4 GHz 時鐘,這對應於每塊 2.1 GB/s、17 Gbit/s 或 30 ns。
從 8 字節消息(單個塊)的 22.5 cpb 值,我們得到每個塊 180 個週期,單個未填充的 64 字節塊為 2.8 cpb 或 45 ns。
對於 SHA-256,我發現以下內容:http ://www.heliontech.com/downloads/fast_hash_asic_datasheet.pdf在我看來,該設備正在快速執行雜湊,而不是並行執行。如果是這樣,他們聲稱他們可以實現 2327 Mbps 的 SHA-256 速率。這是您要求的 ASIC 實現。我建議在為您的應用程序購買一個之前,實際聯繫該公司,因為我之前沒有使用該產品的經驗來驗證它確實可以滿足您的需求。我誤讀了 Gb 與 GB
對於 SHA-3,本展示文稿的幻燈片 4:
聲稱可以在 SHA-3 的硬體中實現 21.23 Gbps 的速度。這是從 2010 年開始的,但它是 NIST 用於選擇其決賽選手的數據的一部分。請注意,BLAKE 顯示的速度是 BLAKE 在 NIST 競賽中使用的 SHA-3 速度,而不是 BLAKE2,後者明顯更快。
本文件詳細介紹了建構 SHA-3 所需的硬體, http: //keccak.noekeon.org/Keccak-main-1.2.pdf(1.2 版的主要文件版本),列出了指定的 12.4 Gbit/s 的吞吐率硬體。(見第 7.4.1 節表中的第一個條目)
(根據我上面的評論)我知道這不是你問的問題,但你可以使用 BLAKE2bp 來實現高速。BLAKE2b 在軟體實現中接近您想要的 1 Gibps,然後 BLAKE2bp 實際上並行化散列(不是一次執行多個散列),從而進一步提高散列的速度。然後可以在硬體中實現 BLAKE2bp 以獲得更高的速度。