使用crc校验方法 校验文件

static unsigned long Crc32Table[256];


int Get_CRC( LPCVOID pData, DWORD dwSize)//获取crc32值
{
ULONG  crc(0xffffffff);
int len;
unsigned char* buffer;
len = dwSize;
buffer =( unsigned char* )pData;
while(len--)
crc = (crc >> 8) ^ Crc32Table[(crc & 0xFF) ^ *buffer++];
return crc^0xffffffff;
}


int GetFileCRC(std::string szFileName)
{
HANDLE hFile = {NULL};
DWORD dwSize, bytes_read;


hFile = CreateFile(szFileName.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_FLAG_SEQUENTIAL_SCAN, NULL);


// 如果该文件不存在
if( hFile == NULL || hFile == INVALID_HANDLE_VALUE )
return (-1);


dwSize = GetFileSize(hFile, NULL);
char *autoptr = new char[dwSize] ;

ReadFile(hFile, autoptr, dwSize, &bytes_read, NULL);
CloseHandle(hFile);



int ncrc =  Get_CRC(autoptr, dwSize);
delete [] autoptr;
return ncrc;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值