【发布时间】:2018-10-28 07:03:30
【问题描述】:
是否有基于 AES 的非加密哈希算法?
我认为这可能很有用,因为我们有 AES-NI 指令,这样的哈希可能非常快。
我想将其用于指纹识别(因此其输出应至少为 128 位)和错误检测目的。
(我已经搜索过这个,但我发现的只是加密哈希)
【问题讨论】:
-
您的理由是非加密哈希算法可以实现更高的性能吗?尝试仅使用带有零密钥的加密货币。或者尝试使用带有零键的 CBC 的最后一个块。这些具有已经实施的优势,因此您几乎可以免费发现性能。
-
@ThomasM.DuBuisson:很简单。 AES 需要更多的轮次。我创建了一个简单的测试,似乎只有 2 轮就足够了。与 AES-128 需要的 10 轮相比,它快了 5 倍。但我不是专家,因此提出了这个问题。
-
是的,已知两轮AES实现全扩散。因此,您可以创建一个新密码 AES-2,并使用该密码获得一个 CMAC,这将是一个合理的非加密哈希。我认为您无需实现此功能即可很好地猜测性能 - 只需将现有 CMAC 基准时间除以 6 即可。
-
@ThomasM.DuBuisson:我认为存在更好的解决方案。例如,我创建了一个哈希,它比 AES-128-CBC(在我的机器上约为 1GB/秒)快 30 倍以上(~30GB/秒)。问题是它未能通过一些 SMHasher 测试。也许其他人也玩过这个问题,并且已经有一个可行的解决方案,它通过了 SMHasher,同时速度非常好。
-
@zaph:我做到了。指纹识别和错误检测。不适用于哈希表。