Copied Con Kolivas' sha256 implementation, is slightly faster