首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于短输入的快速密码散列函数

用于短输入的快速密码散列函数
EN

Cryptography用户
提问于 2020-10-09 14:30:08
回答 2查看 1.4K关注 0票数 6

我正在寻找一个加密哈希函数,以优化在短输入上的速度,以便实现具有扩展因子2的伪随机生成器(例如,获取16个字节的输入,并输出32个伪随机字节)。

以下是我尝试过的一些天生的候选人:

  • SHA256:良好的基线
  • Blake2:设计用于大输入的速度,在短输入上表现不佳。
  • AES-CTR:当硬件支持SHA256时比AES-NI更快.输入用作AES加密所需输出长度的预定义字节数组的密钥。然而,每次对哈希函数调用重新初始化密码都是代价高昂的。

我还发现了一个有趣的结构:STHash。它是一个键控加密哈希函数,为大输入的速度而优化。我不介意有一个键控散列函数而不是一般用途的散列函数。

有没有类似于短输入的结构,或者比AES-CTR更有效地利用AES-NI的方法?

一些非正式基准

对于每个哈希函数,我将一个16字节的数组哈希为一个32字节数组,我重复了1000万次。对于像AES和ChaCha这样的流密码,我在每次迭代时创建一个新的密码,输入作为公钥,固定的纯文本和现在。如果密码需要32位键,我只需输入0。如果哈希函数没有产生足够的位(例如,SipHash只输出128位),我会多次运行它。

我正在英特尔核心™i7-1065G7CPU@ 1.30GHz×8上运行Rust晚间运行,实验运行在一个线程上。

  • SipHash 1-3: 476.9ms
  • Chacha8: 590.4ms
  • SipHash: 670.3ms
  • AES-128: 665.3ms
  • SHA256: 780.4ms
  • Blake2s: 1413.9ms

有关Haraka的一些结果(使用一个不知名的优化实现):

  • Haraka-v2 256-5: 55.2ms
  • Haraka-v2 256-6: 69.9ms
EN

回答 2

Cryptography用户

发布于 2020-10-19 15:44:45

您可以使用HighwayHash。它是一个快速的基于SIMD的键控哈希函数(比SipHash快5倍)和安全索赔,适合于散列短输入。

票数 2
EN

Cryptography用户

发布于 2020-10-12 22:17:53

你试过SipHash吗,尤其是还原版SipHash1-3?

它是为短输入明确设计的,不需要键扩展,在几乎所有类型的体系结构上都是快速的,并且可以输出64或128位。

但是,这个名称可能会令人困惑:需要一个键,但是既然您提到了它不是用例的问题,那么就试一试。

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

https://crypto.stackexchange.com/questions/84450

复制
相关文章

相似问题

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