2015-12-09 49 views
2

我一直在尋找一種快速哈希算法,並遇到xxHash它運行良好。唯一的問題是我需要在多種語言中使用這種散列,目前是Java + JavaScript。 xxHash綁定似乎以不同的語言生成不同的值,所以我猜它不是可移植的?最快的平臺/語言獨立哈希實現

什麼是一些與語言無關的散列算法?我之前的一個例子是MD5,但它與Murmur/Farmhash/xxHash相比非常慢。正如這裏的答案所顯示的,有很多便攜式的,但很慢的算法,比如MD5--這就是爲什麼我已經明確表示快速對我來說很重要。

請注意,我不需要任何密碼,我哈希的唯一性。


編輯:

我不相信這是題外話,並詢問意見;我想要可靠的基準證明算法是快速的,我要求一種獨立於語言的算法,這兩種算法都將觀點作爲有效的信息來源去除。

+0

奇怪的是,'xxhash'綁定不應該生成不同的哈希值。他們應該都是一樣的。 有2個版本,xxh32和xxh64。確保您比較類似的版本。 – Cyan

回答

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

+0

內置的本地模塊支持哪些散列字符? – whitfin

+1

剛剛更新了我的答案,提供了支持的哈希列表。 –

+0

儘管這真的不能回答我的問題,因爲我要求獨立於語言。儘管它們可能在其他平臺上得到支持,但它們也是非常慢的算法。 – whitfin