我正在研究SHA1、SHA-256、SHA-512在不同处理器上的速度(计算哈希的时间)。
这些散列算法能被分解成跨多个核心/线程运行吗?
发布于 2014-06-06 18:21:22
如果您想知道并行化计算单个散列的执行(不管哪种风格的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))
(其中+
符号可以是串联或简单的XOR,但它们很可能是加密强的而不是)。
此方法将受益于多个核,但H_OUT
将不等同于计算原始大输入的单个散列。
https://stackoverflow.com/questions/24088295
复制相似问题