summaryrefslogtreecommitdiff
path: root/ThirdParty/hash-library/readme.md
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-29 18:48:10 +0800
committerchai <chaifix@163.com>2021-10-29 18:48:10 +0800
commit2381fe08be1a0c99d9541761b85064b8ece3f253 (patch)
tree5f04464b7c2ebf3d718b61e959d23f903dd4c6b0 /ThirdParty/hash-library/readme.md
parent796b4b05ec62eb5d58a634854998f485072e8a2b (diff)
+md5
Diffstat (limited to 'ThirdParty/hash-library/readme.md')
-rw-r--r--ThirdParty/hash-library/readme.md51
1 files changed, 51 insertions, 0 deletions
diff --git a/ThirdParty/hash-library/readme.md b/ThirdParty/hash-library/readme.md
new file mode 100644
index 0000000..8be9d01
--- /dev/null
+++ b/ThirdParty/hash-library/readme.md
@@ -0,0 +1,51 @@
+# Portable C++ Hashing Library
+
+This is a mirror of my library hosted at https://create.stephan-brumme.com/hash-library/
+
+In a nutshell:
+
+- computes CRC32, MD5, SHA1 and SHA256 (most common member of the SHA2 functions), Keccak and its SHA3 sibling
+- optional HMAC (keyed-hash message authentication code)
+- no external dependencies, small code size
+- can work chunk-wise (for example when reading streams block-by-block)
+- portable: supports Windows and Linux, tested on Little Endian and Big Endian CPUs
+- roughly as fast as Linux core hashing functions
+- open source, zlib license
+
+You can find code examples, benchmarks and much more on my website https://create.stephan-brumme.com/hash-library/
+
+# How to use
+
+This example computes SHA256 hashes but the API is more or less identical for all hash algorithms:
+
+``` cpp
+// SHA2 test program
+#include "sha256.h"
+#include <iostream> // for std::cout only, not needed for hashing library
+
+int main(int, char**)
+{
+ // create a new hashing object
+ SHA256 sha256;
+
+ // hashing an std::string
+ std::cout << sha256("Hello World") << std::endl;
+ // => a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
+
+ // hashing a buffer of bytes
+ const char* buffer = "How are you";
+ std::cout << sha256(buffer, 11) << std::endl;
+ // => 9c7d5b046878838da72e40ceb3179580958df544b240869b80d0275cc07209cc
+
+ // or in a streaming fashion (re-use "How are you")
+ SHA256 sha256stream;
+ const char* url = "create.stephan-brumme.com"; // 25 bytes
+ int step = 5;
+ for (int i = 0; i < 25; i += step)
+ sha256stream.add(url + i, step); // add five bytes at a time
+ std::cout << sha256stream.getHash() << std::endl;
+ // => 82aa771f1183c52f973c798c9243a1c73833ea40961c73e55e12430ec77b69f6
+
+ return 0;
+}
+```