Rate this:
See more:
Hi everybody. I have been looking for some c++ source code or example for a CRC 128 bits, I already have de polinomial: x128 + x127 + x65 + x64 + x + 1
I have found many examples for crc until crc-32 but I have no idea about how to transform these examples into a crc-128... Could anybody help me in any way? thanks in advance
Posted 8-Nov-12 6:55am
dpcfire106
JackDingler at 9-Nov-12 16:07pm

Are you just having trouble implementing 128 bit integers?

Rate this:

## Solution 1

Try the following (not really a crc but anyway!): http://www.ythorn.com/y/ae/crc.html[^]
dpcfire at 9-Nov-12 3:11am

Thank you very much for your fast answer, I have already been reading that link, but It is not suitable for my development.

I have an unsigned char message[256] (including the crc-128 (16 last bytes of message) and I need to check that this crc is correct.

I have to implement the ekms crc-128 but I can't find any information about it. I only have the polinomial but I don't know how to obtain the crc.
I have found this example (that appears like a generic crc implementation) but I have many problems with the lenght of data (which C++ type do I have to use for the polinomial, and how can I do the mathematical operations with it?): This example is a CRC-16 (I think)

#include
#include
#include

void calcula_crc(unsigned longitud, BYTE *mensaje, BYTE *crc)
{
/* polinomio generador */
char polinomio[] = {1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0};

/* variables */
unsigned long resultado = -1;
char ctl;
int i,j,k;

/* bucle principal para el calculo del CRC */
for(i = 0; i < longitud; i++)
{
for(j = 0; j < 8; j++)
{
ctl = (resultado & 1) ^ ((mensaje >> j) & 1);
resultado = (resultado & ~1) >> 1;

for(k = 0; k < sizeof(polinomio); k++)
{
if(ctl && polinomio[sizeof(polinomio) - 1 - k])
resultado ^= (unsigned long) 1 << k;
}
}
}

/* pone a cero los bits del resultado no ocupados por el CRC */
for(i = sizeof(polinomio); i < sizeof(resultado) * 8; i++)

resultado |= (unsigned long) 1 << i;

/* devuelve el CRC de la secuencia */
crc[0] = resultado & 0xff;
crc[1] = (resultado >> 8) & 0xff;
}

Thank you in advance everybody, I am a bit desperate...
dpcfire at 12-Nov-12 3:14am

No ideas?...

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

 0 Maciej Los 495 1 Sergey Alexandrovich Kryukov 479 2 OriginalGriff 360 3 CHill60 280 4 CPallini 250
 0 Sergey Alexandrovich Kryukov 10,102 1 OriginalGriff 9,495 2 Peter Leow 5,241 3 Kornfeld Eliyahu Peter 3,373 4 Maciej Los 3,076

Advertise | Privacy | Mobile
Web01 | 2.8.150327.1 | Last Updated 8 Nov 2012