sha256 hash implementation in c++