1

今年 AMD 发布了一个新的 x86-64 CPU 系列,名为 RyZen for desktop。RyZen 的规范显示它提供了新的基于 SSE 的 SHA1 和 SHA-256 指令wiki:英特尔 SHA 扩展

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

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

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

4

1 回答 1

3

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和 OPENSSL_ALGO_SHA256 自 PHP 5.5 起就存在:which openssl version support for sha256 in php

Linux Kernel 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。

于 2017-05-31T19:43:03.120 回答