xxHash is a very fast hashing algorithm (see the details here). xxhashjs is a Javascript implementation of it, written in 100% Javascript. Although not as fast as the C version, it does perform pretty well given the current Javascript limitations in handling unsigned 32 bits integers.
In nodejs:
npm install xxhashjs
In the browser, include the following, and access the constructor with XXH:
<script src="/your/path/to/xxhash.js"></script>
In one step:javascript var h = XXH.h32( 'abcd', 0xABCD ).toString(16) // seed = 0xABCD
0xCDA8FAE4
In several steps (useful in conjunction of NodeJS streams):javascript var H = XXH.h32( 0xABCD ) // seed = 0xABCD var h = H.update( 'abcd' ).digest().toString(16)
0xCDA8FAE4
More examples in the examples directory:
XXH makes 2 functions available for 32 bits XXH and 64 bits XXH respectively, with the same signature:
In one step:XXH.h32(<data>, <seed>)
The data can either be a string, an ArrayBuffer or a NodeJS Buffer object.
The seed can either be a number or a UINT32 object.
In several steps:
XXH.h32(<seed>)
or XXH.h32()
init
methodH.update(<data>)
H.digest()
The object returned can be converted to a string with toString(<radix>)
or a number toNumber()
.
Once digest()
has been called, the object can be reused. The same seed will be used or it can be changed with init(<seed>)
.
XXH.h32()
.init(<seed>)
.update(<data>)
digest()
(_UINT32_)
Finalize the hash calculations and returns an UINT32 object. The hash value can be retrieved with toString().
XXH.h64()
.init(<seed>)
.update(<data>)
.digest()
(_UINT64_)MIT