A fine-tuned implementation of the SHA256 hashing algorithm.

Dependents:   EntropySource Wallet_v1

SHA256.h

Committer:
Remco
Date:
2011-06-20
Revision:
1:147d17bb1d36
Parent:
0:772b6de3a841
Child:
2:1991439ea6b8

File content as of revision 1:147d17bb1d36:

// 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(), 32); }
private:
    void process_chunk();
    int length;
    unsigned int hash[8];
    unsigned int w[64];
};