HashLibPlus is a recommended C++11 hashing library that provides a fluent interface for computing hashes and checksums of strings, files, streams, bytearrays and untyped data to mention but a few.
It also supports Incremental Hashing, Cloning, NullDigest.
All CRC Variants from CRC3 to CRC64✔️
Adler32✔️
-
APBKDRBernsteinBernstein1DEKDJBELFFNV✔️ -
FNV1aJSJenkins3Murmur2MurmurHash3_x86_32OneAtTime✔️ -
PJWRSRotatingSDBMShiftAndXorSuperFastXXHash32✔️
FNV64FNV1a64Murmur2_64SipHash64_2_4XXHash64✔️
MurmurHash3_x86_128MurmurHash3_x64_128SipHash128_2_4✔️
-
MD2✔️ -
MD4✔️ -
MD5✔️ -
SHA-0✔️ -
SHA-1✔️ -
SHA-2 (224, 256, 384, 512, 512-224, 512-256)✔️ -
GOST 34.11-94✔️ -
GOST R 34.11-2012 (AKA Streebog) (256, 512)✔️ -
Grindahl (256, 512)✔️ -
HAS160✔️ -
RIPEMD (128, 256, 256, 320)✔️ -
Tiger (128, 160, 192 (Rounds 3, 4, 5))✔️ -
Tiger2 (128, 160, 192 (Rounds 3, 4, 5))✔️ -
Snefru (128, 256)✔️ -
Haval (128, 160, 192, 224, 256 (Rounds 3, 4, 5))✔️ -
Panama✔️ -
RadioGatun (RadioGatun32, RadioGatun64)✔️ -
WhirlPool✔️ -
Blake2B (160, 256, 384, 512)✔️ -
Blake2S (128, 160, 224, 256)✔️ -
SHA-3 (224, 256, 384, 512)✔️ -
Keccak (224, 256, 288, 384, 512)✔️ -
Blake2BP✔️ -
Blake2SP✔️ -
Blake3✔️
-
PBKDF2✔️ -
Argon2 (2i, 2d and 2id variants)✔️ -
Scrypt✔️
-
HMAC (all supported hashes)✔️ -
KMAC (KMAC128, KMAC256)✔️ -
Blake2MAC (Blake2BMAC, Blake2SMAC)✔️
-
Shake (Shake-128, Shake-256)✔️ -
CShake (CShake-128, CShake-256)✔️ -
Blake2X (Blake2XS, Blake2XB)✔️ -
KMACXOF (KMAC128XOF, KMAC256XOF)✔️ -
Blake3XOF✔️
#include "Base/HashFactory.h"
int main()
{
IHash hash = HashFactory::Crypto::CreateMD5();
IHash clone = hash->Clone();
IHMAC hmac = HashFactory::HMAC::CreateHMAC(hash);
hmac->SetKey(Converters::ConvertStringToBytes("password"));
IHashResult Result1 = hash->ComputeString("Hash");
IHashResult Result2 = hmac->ComputeString("Hash");
bool check = Result1->CompareTo(Result2);
return 0;
}Note: catch2 library was used as the test framework in the HashLibPlus.Test project.
1. Build the HashLibPlus-Reloaded project firstly.
2. Drag and drop the built HashLibPlus-Reload Release *.obj files (except for HashLibPlus.obj) into HashLibPlus.Test project in Visual Studio (to avoid link issues) then build.
- HashLibPlus.exe
This executable displays a benchmark test analysis of the compiled code speed with regards to your C.P.U capability.
- HashLibPlus.Test.exe
This executable hooks into catch2 process to allow for detailed test results, and other command line options that catch2 supports for those that wish to pass values to catch2 interface.
If you want implementations in other languages, you can check out these
- SharpHash by Mbadiwe Nnaemeka Ronald
- HashLib4Pascal by Ugochukwu Mmaduekwe
- 💵 Bitcoin:
1Mcci95WffSJnV6PsYG7KD1af1gDfUvLe6