在x86中有加速SHA(SHA1 / 2/256/512)编码的任何指令吗?

例如,在x86中是指令集到硬件加速AES 。 但是在x86中是否存在加速SHA(SHA1 / 2/256/512)编码的任何指令,以及在x86上编码SHA的紧固库是什么?

在x86中有加速SHA(SHA1 / 2/256/512)编码的任何指令吗?

这是2016年11月,答案终于是。 但它唯一的SHA-1和SHA-256(以及扩展名,SHA-224)。

具有SHA扩展的英特尔CPU最近上市。 看起来支持它的处理器是Goldmont微体系结构 :

  • 奔腾J4205(台式机)
  • 奔腾N4200(手机)
  • 赛扬J3455(台式机)
  • 赛扬J3355(台式机)
  • 赛扬N3450(手机)
  • 赛扬N3350(手机)

我查看了亚马逊的产品,了解具有架构或处理器编号的机器,但我找不到任何可用的(尚未)。 我相信惠普宏碁有一台配备Pentium N4200的笔记本电脑预计将于201611月2016年推出,以满足测试需求。

有关为什么它只有SHA-1,SHA-224和SHA-256的一些技术细节,请参阅crypto:arm64 / sha256 – 使用内核加密邮件列表中的NEON指令添加对SHA256的支持 。 简而言之,在SHA-256之上,事情不容易并行化。


您可以在Noloader GitHub上找到Intel SHA内在函数和ARMv8 SHA内在函数的源代码 SHA-Intrinsics 。 它们是C源文件,并为SHA-1,SHA-224和SHA-256提供压缩function。 基于内部的实现为SHA-1增加了大约3倍到4倍的吞吐量,对于SHA-224和SHA-256大约增加了6倍到12倍。

一旦英特尔Skylake微体系结构在2015年到来,当接着说:“英特尔没有为SHA-1或两个专用指令集”时,接受的答案将是不正确的。 英特尔有加速计算SHA1 / 256哈希的upcomming指令 。

在此处输入图像描述

您可以阅读有关它们的更多信息,如何检测CPU是否支持它们以及如何在此处使用它们。 在Skylake到来之前,C / C ++程序员可能最好使用OpenSSL 。

尝试一些开源的东西,比如OpenSSL我亲自使用过它们的MD5散列函数,而且效果很好。 您可能还想看看hashlib2 ++ 。

据我所知,英特尔没有为SHA-1或者两个制作专用指令集。 它们可能在即将到来的架构中作为CodesInChaos在评论中指出。 大多数散列算法的主要组成部分是XOR操作,它已经在指令集中。