首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SHA1、SHA-256、SHA-512能被分解成跨多个内核/线程运行吗?

SHA1、SHA-256、SHA-512能被分解成跨多个内核/线程运行吗?
EN

Stack Overflow用户
提问于 2014-06-06 18:18:26
回答 1查看 5.2K关注 0票数 13

我正在研究SHA1、SHA-256、SHA-512在不同处理器上的速度(计算哈希的时间)。

这些散列算法能被分解成跨多个核心/线程运行吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-06 18:21:22

如果您想知道并行化计算单个散列的执行(不管哪种风格的1、256或512),那么答案是遗憾的是没有。这是因为SHA转换函数的定义方式。它在固定大小的块上运行,但是下一个块需要转换的输出,所以不能并行运行计算。

显然,对于不同的输入字符串,可以并行运行多个散列,但我假设您已经知道了。

如果您只想使用底层SHA转换为大型输入生成摘要,那么您可以定义一个任意方案来分割输入,然后并行地为每个段生成摘要块。然后把它们结合起来。

就像这样:

代码语言:javascript
运行
复制
 | ------------------ large input ---------------------------------------------|

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

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

然后,生成H_OUT = H(H(b0) + H(b1) + .. + H(bn)) (其中+符号可以是串联或简单的XOR,但它们很可能是加密强的而不是)。

此方法将受益于多个核,但H_OUT将不等同于计算原始大输入的单个散列。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24088295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档