寻求有关硬件SHA-2加速的信息

时间:2017-05-31 19:26:57

标签: hash sha1 sha256 sha sha2

今年AMD发布了一系列名为RyZen的新系列x86-64 CPU用于台式机。 RyZen的规范显示它提供了新的基于SSE的SHA1和SHA-256指令wiki: Intel SHA extension

  • sha1指令:SHA1RNDS4,SHA1NEXTE,SHA1MSG1,SHA1MSG2;
  • sha-256指令:SHA256RNDS2,SHA256MSG1,SHA256MSG2

我很好奇,当您使用AMD RyZen CPU时,是否已经存在任何能够在PHP或其他服务器端语言中使用这些指令进行超快速散列的API /库? 如果没有,我们什么时候可以预期它可用?

由于英特尔在2013年左右提供了硬件SHA规范,因此至少有几个编译器必须提供支持。

1 个答案:

答案 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-Cryptohttp://lkml.iu.edu/hypermail/linux/kernel/1511.0/00383.html);但PHP /其他脚本库不太可能使用内核cryptoapi。