如何针对32位架构优化SipHash

时间:2015-06-02 20:22:36

标签: c# optimization hash cryptography

所以有些新的SipHash提供了一个非常快速的安全PRF(也就是键控哈希函数)。我使用ch-siphash,这似乎是最快的C#实现。我在64位的i7 3630QM上获得了相当惊人的性能(1140 MB / s),但是当我切换到32位时,性能下降到316 MB / s,这对于我的目的来说非常慢。 SipHash大量使用64位操作,所以也许并不令人惊讶,但我想知道如何优化32位处理器(特别是Intel和ARM)的算法。

SHA512也大量使用64位操作,但在同一台PC上我在64位应用程序中获得294 MB / s,在32位应用程序上获得192 MB / s,因此这种下降远不如此显着

那么我可以采用哪些很酷的技巧和优化来使SipHash在32位架构上表现更好?显然,我能做的最好的事情是在C ++ DLL中实现哈希(使用SSE),但我正在寻找一个托管(便携式 - 需要在手机和桌面上工作)解决方案。

Some have implemented使用SSE3的32位版本,但性能也不是那么好,所以也许可以更好地完成特定的实现。

存在Chaskey,PRF主要基于SipHash,但专为微控制器(32位及更少)而设计。与SipHash不同,SipHash每个区块使用2轮,最终轮次为4轮,Chaskey每个区块使用8轮,最终轮次为8轮。在32位模式下,我的CPU上的性能比SipHash慢2-3倍,所以这可能不是最佳选择。

0 个答案:

没有答案