A .NET implementation of xxHash.
.NET Fiddle(https://dotnetfiddle.net/dbgN2y)
The following snippet demonstrates computing the XXH32
hash value of the input string "test".
byte[] input = Encoding.ASCII.GetBytes("test"); // the data to be hashed
uint result = XXHash.XXH32(input); // compute the XXH32 hash value. => '1042293711'
// NOTE:
// you can specified seed as the second parameter.
The following snippet computes the XXH32
hash value of the input file "test.doc".
Stream stream = File.OpenRead(@"C:\test.doc"); // the data to be hashed
XXHash.State32 state = XXHash.CreateState32(); // create and initialize a xxH states instance.
// NOTE:
// xxHash require a xxH state object for keeping
// data, seed, and vectors.
XXHash.UpdateState32(state, stream); // puts the file stream into specified xxH state.
uint result = XXHash.DigestState32(state); // compute the XXH32 hash value.
original xxHash API name | XXH32 | XXH64 |
---|---|---|
XXHnn() | XXHash.XXH32() | XXHash.XXH64() |
XXHnn_state_t | XXHash.State32 | XXHash.State64 |
XXHnn_createState() | XXHash.CreateState32() | XXHash.CreateState64() |
XXHnn_freeState() | Not implemented | Not implemented |
XXHnn_reset() | XXHash.ResetState32() | XXHash.ResetState64() |
XXHnn_update() | XXHash.UpdateState32() | XXHash.UpdateState64() |
XXHnn_digest() | XXHash.DigestState32() | XXHash.DigestState64() |
In addition, the assembly also provides XXHash32
and XXHash64
the two implementation classes of System.Security.Cryptography.HashAlgorithm.
The following snippets demonstrate computing the XXH32
hash value with HashAlgorithm approach.
byte[] input = Encoding.ASCII.GetBytes("test"); // the data to be hashed.
using (HashAlgorithm xxhash = XXHash32.Create())
{
byte[] result = xxhash.ComputeHash(input); // compute the hash.
}
-- or --
byte[] input = Encoding.ASCII.GetBytes("test"); // the data to be hashed
using (HashAlgorithm xxhash = XXHash32.Create())
{
xxhash.TransformFinalBlock(input, 0, input.Length);
byte[] result = xxhash.Hash; // retrieves the hash value.
}
NOTE: XXH64 is also supported: you can use xxHash64
class instead of xxHash32
.
- v1.0.2 (equal to xxHash v0.6.2)
Copyright (c) 2015 Wilhelm Liao. See LICENSE for further details.