Criptografia - CRC32

 
Vista:

CRC32

Publicado por raficolino (1 intervención) el 15/11/2005 08:30:54
Buenos dias,

alguien me puede colaborar con el algoritmo en c++ del CRC32

gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:CRC32

Publicado por Julio Návaez (1 intervención) el 04/04/2006 13:40:43
#include <stdio.h>
#include <stdlib.h>

int int997=997;
double dbl=0.0;
unsigned long crc32_table[256];
unsigned long Reflect(unsigned long ref, char ch);
int Get_CRC(char text[255]);
double modulo997(double m );

void Init_CRC32_Table()
{
unsigned long ulPolynomial = 0x04c11db7;
int i;
int j;
for(i = 0; i <= 0xFF; i++) {
crc32_table[i]=Reflect(i, 8) << 24;

for (j = 0; j < 8; j++)
crc32_table[i] = (crc32_table[i] << 1) ^ (crc32_table[i] & (1 << 31) ? ulPolynomial : 0);
crc32_table[i] = Reflect(crc32_table[i], 32);
}
}

unsigned long Reflect(unsigned long ref, char ch)
{
unsigned long value=(0);
int i;
for(i = 1; i < (ch + 1); i++)
{
if(ref & 1)
value |= 1 << (ch - i);
ref >>= 1;
}
return value;
}

int Get_CRC(char text[255])
{
unsigned long ulCRC=0xffffffff;
int len;
unsigned char* buffer;
len = strlen(text);
buffer = (unsigned char*)text;
while(len--)
ulCRC = (ulCRC >> 8) ^ crc32_table[(ulCRC & 0xFF) ^ *buffer++];

return ulCRC ^ 0xffffffff;
}

int main(void)
{
char cadena[255]="\0";
unsigned long nCRC=0;
printf("\nDigite cadena : ");
gets(cadena);
Init_CRC32_Table();
nCRC=Get_CRC(cadena);
printf("\ncrc32 es %10u\n\n",nCRC);
system("pause");
return 0;
}

double modulo997(double m ){
dbl = fmod(m,int997);
return dbl;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CRC32

Publicado por Pablo Olivarez (1 intervención) el 17/08/2006 22:28:44
Esta muy bueno tu codigo, pero tengo un problema al ingresar ceros (0). No se como indicar que no es el final del array de chars.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar