HashifyNET 4.0.0
Pre-release
Pre-release
The entire library has been revamped and renamed to HashifyNET, replacing the previous name of Data.HashFunction.
Changes include but are not limited to:
- Standardized
HashFactoryclass for all hash functions. - Support for 11 more hash algorithms as listed on the main page.
- Bug fixes in CRC with pre-defined configs not being cloned before returning. This was causing a potential leak of the original config class that can be accessed by casting the interface to the underlying class. If the values were then changed by any chance, the default config values would be changed as well, leading to hard-to-predict behaviour for developers. This has been prevented with a
Clonecall. - Simplified Farm Hash and Metro Hash to use configs instead of different implementations for each bit size.
- Enforced config implementation for every hash function; configs are now globalized across the entire library.
- Added
HashComparerstatic class for fixed time comparisons of two cryptographic hashes. It is primarily required for cryptographic hashes. - Added cryptographic interfaces and base classes to the core. However, the current support only includes cryptographic config disposal and nothing more yet.
- Added
Endiannessstatic class, but it is currently not mature yet. It is for internal use only, shared across the entire library for each hash algorithm to use. - Added support for .NET 8, which was primarily aimed at for future intrinsics support.
- Blake3 implementation is rewritten entirely in C#, no dependency or unmanaged library required anymore.
- The custom
UInt128struct has been restricted to .NET Standard 2.0 use, and the built-inUInt128will be used in .NET 8. We have also moved the customUInt128implementation in each algorithm into a single place underCore.Utilities, no more redundant definitions for such utilities.
Full Changelog: https://github.com/Deskasoft/HashifyNET/commits/4.x.x