2017-05-31 90 views
0

今年,AMD发布了一系列名为RyZen的x86-64 CPU。 RyZen的规格说明它提供了新的SSE基于SHA1和SHA-256指令wiki: Intel SHA extension寻求有关硬件SHA-2加速的信息

  • SHA1说明:SHA1RNDS4,SHA1NEXTE,SHA1MSG1,SHA1MSG2;
  • SHA-256指令:SHA256RNDS2,SHA256MSG1,SHA256MSG2

我很好奇,做任何的API /库的存在就能够laverage这些指令超快哈希在PHP或使用其他服务器端语言,当你使用AMD RyZen CPU时? 如果不是,我们应该在什么时候有空?

由于英特尔在2013年左右提供了硬件SHA的规范,似乎至少有一些编译器必须提供对它的支持。硬件加速SHA256的

+1

您可以在github(或互联网)等热门仓库中尝试搜索指令名称(从像'sha256msg1'这样的维基,或者从'shaintrin.h'或'__builtin_ia32_sha256msg1'选择_mm形式''_mm_sha256msg1_epu32''),并排除gcc/llvm /编译器测试。 SHA256扩展支持被添加到openssl中(https://github.com/openssl/openssl/blob/master/crypto/sha/asm/sha256-mb-x86_64.pl),所以任何使用openssl for sha256的php/c lib将会最近有足够的openssl和最新的CPU可以从硬件加速中受益。 – osgx

回答

2

支持加入OpenSSL的1.0.2 [2015年1月22日]: https://git.openssl.org/gitweb/?p=openssl.git;a=blob;f=CHANGES

1962 Changes between 1.0.1l and 1.0.2 [22 Jan 2015] 

2012 *) Support for new and upcoming Intel processors, including AVX2, 
2013  BMI and SHA ISA extensions. This includes additional "stitched" 
2014  implementations, AESNI-SHA256 and GCM, and multi-buffer support 
2015  for TLS encrypt. 

因此,启用硬件和最新的OpenSSL,任何PHP/Python库使用openssl来计算SHA256可能会使用硬件加速的SHA256摘要计算(如果在openssl中启用,并且该实现将由库选择)。和命令行太:openssl dgst -sha256 -binary file_to_be_hashed

有OpenSSL库的PHP中一些生绑定:http://php.net/manual/en/function.openssl-digest.php和OPENSSL_ALGO_SHA256是有自PHP 5.5:which openssl version support for sha256 in php

Linux内核的CryptoAPI可以使用硬件SHA1/SHA2因为版本4.4:https://www.phoronix.com/scan.php?page=news_item&px=Linux-4.4-Cryptohttp://lkml.iu.edu/hypermail/linux/kernel/1511.0/00383.html);但PHP /其他脚本库不太可能使用内核cryptoapi。

+1

您可以剖析任何SHA256繁重的计算代码(在linux中 - 使用'perf record -e cycles:u ./program; perf report')并检查在sha1/sha256计算函数中使用了哪些指令。 – osgx

+0

感谢openssl链接,这是非常丰富的。 – falero80s