次の問題があります: を使用してデータ ブロックの adler32 チェックサムを計算しようとしていますCrypto++
が、byte[4] 配列出力を uint32_t に変換した後、間違ったチェックサムが得られます。
crc32 を使用したこの関数は問題なく動作します。
CryptoPP::CRC32 crc;
byte digest[CryptoPP::CRC32::DIGESTSIZE];
crc.CalculateDigest(digest, (const byte*)pData.data(), pData.size());
uint32_t checksum = *(uint32_t*)digest; //this works fine
しかし、adler32 を計算する関数は無効な値を返します。
CryptoPP::Adler32 adler;
byte digest[CryptoPP::Adler32::DIGESTSIZE];
adler.CalculateDigest(digest, (const byte*)pData.data(), pData.size());
uint32_t checksum = *(uint32_t*)digest; //this returns a invalid value
誰かが私にヒントをくれることを願っています。
グリーツ・ファビアン