Skip to content

wilhelmliao/xxHash.NET

Repository files navigation

xxHash.NET

  • Build Status .NET Framework v4.0:NuGet version .NET core 2.0:NuGet version

A .NET implementation of xxHash.

Synopsis

Demo

.NET Fiddle(https://dotnetfiddle.net/dbgN2y)

xxHash API approach

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.
Supported xxHash APIs:
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()

HashAlgorithm approach

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.

Versioning


Copyright

Copyright (c) 2015 Wilhelm Liao. See LICENSE for further details.

About

xxHash for .NET

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages