C++14 header-only easy-to-use cryptographic hash library
GPL-3.0 License
C++14 header-only easy-to-use hash library
What is included in this library:
If you are concerned about security, state-of-the-art performance or whatsoever issue, then take your time and go setup OpenSSL or other proven library
Now some features:
To use this library in your project:
Download this repository and unzip it
Use it like:
// include the header
#include "pathToLib/sha1.h"
// If you are using C++14 or C++17, don't forget the "gsl" folder!
void example()
{
// Get an instance
Chocobo1::SHA1 sha1;
// Feed data & data length to it
sha1.addData("hello", 5);
// ... or just
sha1.addData("hello");
// Tell it to wrap it up
sha1.finalize();
// Profit! oops, not really...
std::string result = sha1.toString();
// A one-liner
std::string result2 = Chocobo1::SHA1().addData("hello").finalize().toString();
// In byte array form
auto bytes = Chocobo1::SHA1().addData("hello").finalize().toArray(); // std::array<uint8_t, 20>
// Some hash algorithm provides constexpr result under C++17
constexpr uint8_t data[] = {0x00, 0xFF};
constexpr auto bytes2 = Chocobo1::SHA1().addData(data).finalize().toArray();
}
There is also a driver program included, you can find it at "src/program"
Compile:
cd src/program
meson _builddir # initialize build folder
cd _builddir
ninja # call the `ninja` to build our program
Run:
$ ./hash -md5 /path/to/file
cd tests
meson _build
cd _build
ninja
./run_tests
std::span
will be used in place of gsl::span
. gsl::span
related headers).See LICENSE file
Please consider donate