一個例子,在x86 are Instruction Set to hardware acceleration AES。但是在x86中有沒有加速SHA(SHA1/2/256/512)編碼的指令,以及在x86上對SHA進行編碼的緊迫性是什麼?在x86中是否有加速SHA(SHA1/2/256/512)編碼的指令?
回答
在x86中是否有加速SHA(SHA1/2/256/512)編碼的指令?
這是2016年11月,答案終於有。但它唯一的SHA-1和SHA-256(以及擴展名爲SHA-224)。
Intel CPUs with SHA extensions近期投放市場。它看起來像支持它是Goldmont microarchitecture處理器:
- 奔騰J4205(桌面)
- 奔騰N4200(移動)
- 賽揚J3455(桌面)
- 賽揚J3355(桌面)
- 賽揚N3450 (移動)
- 賽揚N3350(移動)
我在亞馬遜的產品中查看了架構或處理器編號的機器,但是我沒有找到任何可用的(還)。我相信,2016年11月 2016年12月,將滿足測試需求
HP
宏基有一臺筆記本電腦與奔騰N4200預計可在
。
對於某些技術細節,爲什麼只有SHA-1,SHA-224和SHA-256,然後在內核加密郵件列表上看到crypto: arm64/sha256 - add support for SHA256 using NEON instructions。簡而言之,在SHA-256之上,事情並不容易並行化。
你可以找到英特爾SHA內在和ARMv8 SHA內在的Noloader GitHub | SHA-Intrinsics源代碼。它們是C源文件,併爲SHA-1,SHA-224和SHA-256提供壓縮功能。對於SHA-1,基於固有的實現增加吞吐量約3倍至4倍,對於SHA-224和SHA-256約6倍至12倍。
我在這個鏈接中尋找SHA-512的討論,但是對「512」的文本搜索沒有找到任何東西。你在談論哪篇文章?你可以用軟件和普通標量或SIMD整數指令(即這個補丁的大部分或全部)與英特爾可以在硬件中實現的內容相關嗎?或者矢量寄存器還沒有512b寬的相關事實? (我真的不知道SHA的工作原理。) –
@Peter - 查看Andy Polyakov的評論。他在解釋它的時候做得比我說的更好。 – jww
支持在OpenSSL中實現:[參見crypto/sha/asm/sha1-x86_64.pl](https://github.com/openssl/openssl/blame/5071824/crypto/sha/asm/sha1-x86_64.pl# L388) –
嘗試開放源代碼,如OpenSSL 我個人使用過他們的MD5哈希函數,而且工作得很好。 你可能也想看看hashlib2++。
據我所知,英特爾還沒有對SHA-1或兩個由專用指令集。他們可能會在即將到來的架構中以CodesInChaos的形式在評論中指出。大多數哈希算法中的主要組成部分是已經在指令集中的XOR操作。
一旦英特爾Skylake microarchitecture到達2015年的時候它說接受的答案將是不正確的:「英特爾沒有對SHA-1或兩個由專用的指令集」。 Intel has upcomming instructions用於加速SHA1/256散列的計算。
你可以閱讀更多關於他們,如何檢測,如果你的CPU的支持,以及如何使用它們here。在Skylake到達之前,C/C++程序員可能最好使用OpenSSL。
- 1. x86指令編碼表
- 2. x86兼容的加速器Intel Xeon Phi中是否存在SIMD(SSE/AVX)指令?
- 3. 是否有可能通過AngularJS在指令中加載指令?
- 4. x86彙編指令REPE/REPZ和REPNE/REPNZ是否相等?
- 5. X86'cmpps'指令和LLVM IR'fcmp'指令是否可互換?
- 6. 計算X86彙編語言代碼中的指令數
- 7. 是否有適合iPhone使用HMAC-SHA-1編碼的庫
- 8. x86解碼指令操作碼字節
- 9. x86操作碼指令解碼
- 10. x86和指令
- 11. x86編譯器是否有編碼標準?
- 12. 相同x86彙編指令的不同
- 13. 是否有程序將x86代碼更改爲彙編代碼?
- 14. 「leal 0x10(%ebx),%eax」x86彙編指令中的0x10是什麼?
- 15. 指針Deferencing在x86彙編代碼
- 16. 在x86彙編中的「imul」指令的不熟悉的語法
- 17. x86彙編:MOVSD指令問題
- 18. C inline彙編x86 fbstp指令
- 19. 彙編語言x86 JL指令
- 20. x86彙編指令:CALL *註冊
- 21. x86彙編,堆棧推入指令
- 22. x86指令含義
- 23. x86指令到操作碼轉換
- 24. 在Windows中是否存在針對C++的簡單Program Files/Program Files(x86)指令?
- 25. Chrome的V8引擎是否使用x86-64指令集
- 26. 「rep stos」x86彙編指令序列的作用是什麼?
- 27. 「.align」x86彙編程序指令是做什麼的?
- 28. x86 - CALL指令是否總是將EIP指向的地址推送到堆棧?
- 29. 重複MOV指令的x86
- 30. x86簡單的mov指令
請閱讀http://software.intel.com/zh-cn/articles/improving-the-performance-of-the-secure-hash-algorithm-1 – alexbuisson
投票結束這一決定的人肯定已經完成了錯誤? – TonyK
@TonyK可能是因爲要求*最快的圖書館,這可能會吸引輿論反應。問題的這一部分是無法回答的。 – IInspectable