A fine-tuned implementation of the SHA256 hashing algorithm.

Dependents:   EntropySource Wallet_v1

Revision:
0:772b6de3a841
Child:
1:147d17bb1d36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SHA256.h	Mon Jun 20 00:23:22 2011 +0000
@@ -0,0 +1,25 @@
+// Author: Remco Bloemen
+// Based on:
+//   http://en.wikipedia.org/wiki/SHA-2
+//   http://www.iwar.org.uk/comsec/resources/cipher/sha256-384-512.pdf
+
+#include <string.h>
+#include <string>
+
+class SHA256 {
+public:
+    SHA256() { reset(); }
+    void reset();
+    void append(const char* data, int size);
+    void append(const char* str) { append(str, strlen(str)); }
+    void append(const std::string& str) { append(str.data(), str.length()); }
+    void finalize();
+    const char* digest() { return reinterpret_cast<char*>(hash); }
+    std::string rawdigest() { return std::string(digest(), 8); }
+private:
+    void process_chunk();
+    int length;
+    unsigned int hash[8];
+    unsigned int w[64];
+};
+