微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多线程 – SHA1,SHA-256,SHA-512可以分解为跨多个核心/线程运行吗?

我正在研究不同处理器上SHA1,SHA-256,SHA-512的速度(计算散列的时间)

这些哈希算法可以分解为跨多个核心/线程运行吗?

解决方法

如果你想知道并行化计算单个散列的执行(无论味道1,256或512),那么答案很遗憾.这是因为定义了SHA转换函数的方式.它在固定大小的块上运行,但是下一个需要每个块的转换输出,因此您无法并行运行计算.

对于不同的输入字符串,显然可以并行运行多个哈希,但我认为你已经知道了.

如果你想要的是使用底层SHA变换为大输入生成摘要,你可以定义一个任意方案来分割输入,然后并行地为每个段生成摘要块.然后结合那些等等..

像这样的东西:

| ------------------ large input ---------------------------------------------|

 |    b0     |    b1    |    b2    |          |          |          |    bn    |

您可以并行生成H(b0),H(b1),… H(bn).

然后,生成H_OUT = H(H(b0)H(b1)… H(bn))(其中符号可以是串联或简单的异或,但这些很可能不是加密强的).

方法将受益于多个内核,但H_OUT将不等同于计算原始大输入的单个哈希.

原文地址:https://www.jb51.cc/java/123764.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐