Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Контроль за целостностью файла или CRC 16.08.02 06:20 Число просмотров: 1022
Автор: VisUAll Статус: Незарегистрированный пользователь
|
Можно использовать CRC32
Алгоритм страрый и надежный (MD5 для такого случая крутоват)
#define CRC32_POLYNOMIAL 0xedb88320L
unsigned long CRCTable[256];
InitCRC32( )
{
unsigned long crc;
for ( int i = 0; i <= 255; i++) {
crc=i;
for ( int j = 8; j > 0; j--) {
if ( crc & 1 )
crc = ( crc >> 1 ) ^ CRC32_POLYNOMIAL;
else
crc >>= 1;
}
CRCTable[ i ] = crc;
}
}
unsigned long CalcBufferCRC( int count, unsigned long crc, unsigned char* buffer )
{
unsigned long temp1;
unsigned long temp2;
while( count-- != 0 ) {
temp1 = ( crc >> 8 ) & 0x00FFFFFFL;
temp2 = CRCTable [ ( ( int ) crc ^ *buffer++ ) & 0xff ];
crc = temp1 ^ temp2;
}
return ( crc );
}
Сначала вызываешь InitCRC32, а потом спокойно считываешь файл кусками и считаешь для них CRC. CRC для каждого куска складываешь и все :)
Думаю так можно сделать.
|
|
|