2015-04-28 5 views
5

काम नहीं करता है मुझे इंटरनेट पर यह सीआरसी 32 कार्यान्वयन मिला, थोड़ा सा बदल गया, लेकिन मैं इसे काम नहीं कर सकता। मैं इसे प्रारंभ और हर बाइट मैं इनपुट से मिलता है पर इसे अद्यतन, लेकिन हैश मैं यह क्या किया जाना चाहिए ...सीआरसी 32 सी कार्यान्वयन -

typedef struct { 
    unsigned short xor; 
} xor_context; 
void crc32_init(crc32_context *context) { 
    context->crc = 0xFFFFFFFF; 
} 
void crc32_update(crc32_context *context, unsigned char byte) { 
    uint32_t crc, mask; 

    crc = context->crc; 
    crc = crc^byte; 
    for (int j = 7; j >= 0; j--) { // Do eight times. 
     mask = -(crc & 1); 
     crc = (crc >> 1)^(0xEDB88320 & mask); 
    } 
    context->crc = ~crc; 
} 

यह एक मूल

unsigned int crc32b(unsigned char *message) { 
    int i, j; 
    unsigned int byte, crc, mask; 

    i = 0; 
    crc = 0xFFFFFFFF; 
    while (message[i] != 0) { 
     byte = message[i];   // Get next byte. 
     crc = crc^byte; 
     for (j = 7; j >= 0; j--) { // Do eight times. 
     mask = -(crc & 1); 
     crc = (crc >> 1)^(0xEDB88320 & mask); 
     } 
     i = i + 1; 
    } 
    return ~crc; 
} 
+0

यह बदलें नहीं है तब? – Persixty

+0

भी काम नहीं करेगा, मैंने कोशिश की है – kiro135

+0

क्या आप सुनिश्चित हैं कि बहुपद सही है? – fuz

उत्तर

2
//typedef struct { 
// unsigned short xor; 
//} xor_context;//--> Not sure what part this plays in the code! 

void crc32_init(crc32_context *context) { 
    context->crc = 0xFFFFFFFF; 
} 

void crc32_update(crc32_context *context, unsigned char byte) { 
    uint32_t crc, mask; 

    crc = context->crc; 
    crc = crc^byte; 
    for (int j = 7; j >= 0; j--) { // Do eight times. 
     mask = -(crc & 1); 
     crc = (crc >> 1)^(0xEDB88320 & mask); 
    } 
    //context->crc = ~crc; //<-- Don't perform for every byte. 
    context->crc = crc; //EDIT: Forgot this! 
} 

//Completes the check. 
uint32_t crc32_complete(crc32_context *context){ 
    return ~context->crc; 
} 
+0

ग्रेट, मदद के लिए धन्यवाद। मैं 3 दिनों के लिए बेताब हूँ: डी – kiro135

+0

@ kiro135 क्या आपको मेरा संपादन मिला? मैं 'नहीं' को हटाने में थोड़ा भारी हाथ था। ऊपर देखो। – Persixty

+1

हां, मुझे यह मिल गया। धन्यवाद – kiro135

संबंधित मुद्दे