最快的平台/语言无关哈希实现

时间:2015-12-09 21:46:28

标签: javascript java algorithm hash

我一直在寻找一种快速哈希算法,遇到了xxHash,效果很好。唯一的问题是我需要跨多种语言使用这种散列,目前是Java + JavaScript。 xxHash绑定似乎在不同语言中生成不同的值,所以我猜它不可移植?

什么是与语言无关的哈希算法?我之前的一个例子是MD5,但与Murmur/Farmhash/xxHash相比,它的速度非常慢。正如这里的答案所示,有很多便携的但慢算法,例如MD5 - 这就是为什么我已经明确表示快速对我来说很重要。

请注意,我不需要任何加密,我正在为唯一性而烦恼。

修改:

我不相信这是偏离主题并征求意见;我想要坚实的基准测试证明算法很快,我要求一种语言无关的算法,这两种算法都将意见作为有效的信息来源。

1 个答案:

答案 0 :(得分:2)

如果您使用的是nodejs,我建议您使用具有本机支持的节点。您将从这些实现的未来更新中受益。

列表在这里:https://nodejs.org/api/crypto.html

它们是非常标准的算法,所以你几乎可以在任何编程语言中找到它,比如java或c。

在节点中,您可以调用require('crypto').getHashes()并查看支持的哈希列表。

我在电脑上运行它,结果是:

[ 'DSA',
  'DSA-SHA',
  'DSA-SHA1',
  'DSA-SHA1-old',
  'RSA-MD4',
  'RSA-MD5',
  'RSA-MDC2',
  'RSA-RIPEMD160',
  'RSA-SHA',
  'RSA-SHA1',
  'RSA-SHA1-2',
  'RSA-SHA224',
  'RSA-SHA256',
  'RSA-SHA384',
  'RSA-SHA512',
  'dsaEncryption',
  'dsaWithSHA',
  'dsaWithSHA1',
  'dss1',
  'ecdsa-with-SHA1',
  'md4',
  'md4WithRSAEncryption',
  'md5',
  'md5WithRSAEncryption',
  'mdc2',
  'mdc2WithRSA',
  'ripemd',
  'ripemd160',
  'ripemd160WithRSA',
  'rmd160',
  'sha',
  'sha1',
  'sha1WithRSAEncryption',
  'sha224',
  'sha224WithRSAEncryption',
  'sha256',
  'sha256WithRSAEncryption',
  'sha384',
  'sha384WithRSAEncryption',
  'sha512',
  'sha512WithRSAEncryption',
  'shaWithRSAEncryption',
  'ssl2-md5',
  'ssl3-md5',
  'ssl3-sha1',
  'whirlpool' ]

我正在使用节点v4.2.1。

您也可以使用cryptojs。 cryptojs支持的哈希算法列表如下:https://code.google.com/p/crypto-js/#The_Hasher_Algorithms