Skip to content
Xen edited this page Sep 3, 2025 · 3 revisions

Introducing version 5.0.0, the next major release of HashifyNET with many major changes. With this release, we flag the library as ready for production, so feel free to use it in your real projects.

Here's a brief list consulting the highlighted changes:

  • No more factory access through "Instance" singleton. The API now handles this behind the scenes, without extending the path. Feel free to do HashFactory<ICRC>.Create();.
  • HashifyNET is now fully CLS-Compliant!
  • Eliminated use of BitConverter, now every implementation relies on the utility class Endianness for conversions, making the library 100% platform-independent.
  • Added RapidHash support with Original, Micro, and Nano modes.
  • Added xxHash3 and xxHash3_128 support through System.IO.Hashes. You do not have to reference this library as it will be handled by HashifyNET automatically.
  • Added HashComparer API for using fixed time equality where required. HashValue (and IHashValue) automatically uses this in the background for all quality checks.
  • Fixed 2 critical bugs in BlockTransformerBase that you can find the details of in the commits for that file.
  • HashValue now holds an immutable result that can never change. You can 100% trust a HashValue instance to behave the same for its entire existence in the memory.
  • HashValue no longer coerces results automatically. Instead, we pushed this as a utility and used it in specific hash implementations where it was mandatory. HashValue enforces the given result to be equal to the given bit length in terms of bytes; otherwise, it now throws an exception rather than coercing the array. This enforces correctness since all implementations must return a buffer containing bytes in the expected bit range. If you want to coerce the array manually, you can do so through result.Coerce(desired_bit_length);.
  • Added a universal test that runs for every single hash algorithm HashifyNET supports with known expectations, such as computing identical inputs having to result in the same hash for the same algorithm. Every single hash algorithm goes through 1000+ computations in this test, and currently, all of them pass this.
  • Encoded hash values no longer return the encoded hash directly in the Hash property. Instead, you have to cast the IHashValue interface instance to an EncodedHashValue class instance, then access its EncodedHash property.

For the full list of changes, please check our release.

Click here for the latest available NuGet package.

Clone this wiki locally