Hash CRC32哈希生成无效

Hash CRC32哈希生成无效,hash,sha1,crypto++,crc32,Hash,Sha1,Crypto++,Crc32,我正在使用Crypto++库从纯文本创建SHA1和CRC32哈希,如下所示: #包括 #包括 #包括 #包括 #包括 #包括 int main() { //计算SHA1 std::string data=“Hello World”; std::string base_encoded_string; 字节sha_散列[CryptoPP::sha::DIGESTSIZE]; CryptoPP::SHA().CalculateDigest(SHA_散列,(字节*)data.data(),data.si

我正在使用Crypto++库从纯文本创建SHA1CRC32哈希,如下所示:

#包括
#包括
#包括
#包括
#包括
#包括
int main()
{
//计算SHA1
std::string data=“Hello World”;
std::string base_encoded_string;
字节sha_散列[CryptoPP::sha::DIGESTSIZE];
CryptoPP::SHA().CalculateDigest(SHA_散列,(字节*)data.data(),data.size());
CryptoPP::StringSource ss1(std::string(sha_散列,sha_散列+CryptoPP::sha::DIGESTSIZE),true,
新的CryptoPP::HexEncoder(新的CryptoPP::StringSink(基本编码字符串));
标准::cout
字节crc32_散列[CryptoPP::crc32::DIGESTSIZE]

我相信您的endian交互不好。CRC32值是一个整数,而不是字节数组

所以试试这个:

int32_t crc = (crc32_hash[0] << 0) | (crc32_hash[1] << 8) |
                (crc32_hash[2] << 16) | (crc32_hash[3] << 24);
或者,这可能更容易:

int32_t crc32_hash;
CryptoPP::CRC32().CalculateDigest(&crc32_hash, (byte*)data.data(), data.size());
我可能对
int32\u t
有错误,可能是
uint32\u t
(我没有看标准)

int32_t crc32_hash;
CryptoPP::CRC32().CalculateDigest(&crc32_hash, (byte*)data.data(), data.size());