我正在寻找一个加密哈希函数,以优化在短输入上的速度,以便实现具有扩展因子2的伪随机生成器(例如,获取16个字节的输入,并输出32个伪随机字节)。
以下是我尝试过的一些天生的候选人:
我还发现了一个有趣的结构:STHash。它是一个键控加密哈希函数,为大输入的速度而优化。我不介意有一个键控散列函数而不是一般用途的散列函数。
有没有类似于短输入的结构,或者比AES-CTR更有效地利用AES-NI的方法?
对于每个哈希函数,我将一个16字节的数组哈希为一个32字节数组,我重复了1000万次。对于像AES和ChaCha这样的流密码,我在每次迭代时创建一个新的密码,输入作为公钥,固定的纯文本和现在。如果密码需要32位键,我只需输入0。如果哈希函数没有产生足够的位(例如,SipHash只输出128位),我会多次运行它。
我正在英特尔核心™i7-1065G7CPU@ 1.30GHz×8上运行Rust晚间运行,实验运行在一个线程上。
有关Haraka的一些结果(使用一个不知名的优化实现):
发布于 2020-10-19 15:44:45
您可以使用HighwayHash。它是一个快速的基于SIMD的键控哈希函数(比SipHash快5倍)和安全索赔,适合于散列短输入。

发布于 2020-10-12 22:17:53
你试过SipHash吗,尤其是还原版SipHash1-3?
它是为短输入明确设计的,不需要键扩展,在几乎所有类型的体系结构上都是快速的,并且可以输出64或128位。
但是,这个名称可能会令人困惑:需要一个键,但是既然您提到了它不是用例的问题,那么就试一试。
https://crypto.stackexchange.com/questions/84450
复制相似问题