今年AMD发布了一系列名为RyZen的新系列x86-64 CPU用于台式机。 RyZen的规范显示它提供了新的基于SSE的SHA1和SHA-256指令wiki: Intel SHA extension:
我很好奇,当您使用AMD RyZen CPU时,是否已经存在任何能够在PHP或其他服务器端语言中使用这些指令进行超快速散列的API /库? 如果没有,我们什么时候可以预期它可用?
由于英特尔在2013年左右提供了硬件SHA规范,因此至少有几个编译器必须提供支持。
答案 0 :(得分:2)
在openssl 1.0.2 [2015年1月22日]中添加了对硬件加速SHA256的支持: 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,任何使用openssl计算SHA256的php / python库都可以使用硬件加速的SHA256摘要计算(如果在openssl中启用,并且如果库将选择此实现)。还有命令行:openssl dgst -sha256 -binary file_to_be_hashed
。
在php中有一些openssl库的原始绑定:http://php.net/manual/en/function.openssl-digest.php,自PHP 5.5开始就有OPENSSL_ALGO_SHA256:which openssl version support for sha256 in php
Linux内核CryptoAPI可能使用自4.4版本的硬件SHA1 / SHA2:https://www.phoronix.com/scan.php?page=news_item&px=Linux-4.4-Crypto(http://lkml.iu.edu/hypermail/linux/kernel/1511.0/00383.html);但PHP /其他脚本库不太可能使用内核cryptoapi。