【发布时间】:2013-02-07 02:15:16
【问题描述】:
是否可以优化功能:
MD5_Update(&ctx_d, buf, num);
如果您知道buf 只包含零?
或者这在数学上是不可能的?
SHA1 也是如此。
【问题讨论】:
-
您可能能够在两种算法的块散列步骤中优化许多迭代的第一次“迭代”。但除此之外,故意缺乏数学属性使得这(故意)难以/不可能做到。
-
你的目标是什么?你为什么关心这个?您可以使用预计算(即消息的开头为零)吗?
-
离题:@Mysticial 你可能对password hashing competition 感兴趣,它需要尽可能利用标准硬件(CPU+RAM)的结构,同时对其他硬件(GPU/FPGA/)不友好ASIC),所以一个重要的部分是设计和实现高性能结构。
-
如果您控制哈希函数的输入,那么您可以使用简单的计数而不是所有的零,也许使用某种转义。例如。十六进制的
000020可能意味着 32 个零。一个(非常)基本的压缩函数可能比 MD5 或 SHA1 快得多。 -
@owlstead - 好主意 - 如果您将此作为答案提交,我会接受。
标签: c optimization cryptography md5 sha1