Javascript 最快的平台/语言独立散列实现
我一直在寻找一种快速散列算法,结果发现它工作得很好。唯一的问题是我需要跨多种语言使用这种哈希,目前是Java+JavaScript。xxHash绑定似乎以不同的语言生成不同的值,所以我猜它不可移植 哪些是独立于语言的哈希算法?我之前的一个例子是MD5,但它与Javascript 最快的平台/语言独立散列实现,javascript,java,algorithm,hash,Javascript,Java,Algorithm,Hash,我一直在寻找一种快速散列算法,结果发现它工作得很好。唯一的问题是我需要跨多种语言使用这种哈希,目前是Java+JavaScript。xxHash绑定似乎以不同的语言生成不同的值,所以我猜它不可移植 哪些是独立于语言的哈希算法?我之前的一个例子是MD5,但它与杂音/Farmhash/xxHash相比太慢了。正如这里的答案所示,有很多可移植的但很慢的算法,比如MD5——这就是为什么我明确表示,速度快对我很重要 请注意,我不需要任何加密,我正在哈希唯一性 编辑: 我不认为这是离题和征求意见;我希望有
杂音/Farmhash/xxHash
相比太慢了。正如这里的答案所示,有很多可移植的但很慢的算法,比如MD5——这就是为什么我明确表示,速度快对我很重要
请注意,我不需要任何加密,我正在哈希唯一性
编辑:
我不认为这是离题和征求意见;我希望有可靠的基准来证明算法是快速的,我要求有一种独立于语言的算法,这两种算法都可以消除意见作为有效信息源的问题 如果您使用的是nodejs,我建议您使用具有本机支持的nodejs。您将受益于这些实现的未来更新 名单如下: 它们是非常标准的算法,所以几乎可以在任何编程语言中找到,比如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支持的散列算法列表如下:内置本机模块支持哪些散列ALG?刚刚更新了我的答案以提供支持的散列列表。但这并不能回答我的问题,因为我要求的是独立于语言的。虽然它们可能在其他平台上得到支持,但它们的算法也非常慢。奇怪的是,
xxhash
绑定不应该生成不同的散列值。它们应该完全相同。有两个版本,xxh32和xxh64。确保比较相似的版本。