#include "stdafx.h" #include "CRC.h" #define POLY64REV 0x95AC9329AC4BC9B5ULL #define INITIALCRC 0xFFFFFFFFFFFFFFFFULL unsigned long long CRC64::CRCTable[256] = { 0 }; CRC64::CRC64() { int i, j; unsigned long long part; for (i = 0; i < 256; i++) { part = i; for (j = 0; j < 8; j++) { if (part & 1) part = (part >> 1) ^ POLY64REV; else part >>= 1; } CRCTable[i] = part; } } UINT64 CRC64::GetCrc64(const char* pSrc, DWORD size) { unsigned long long crc = INITIALCRC; for (DWORD i = 0; i < size; i++) { crc = CRCTable[(crc ^ pSrc[i]) & 0xff] ^ (crc >> 8); } return crc; }