1*ddceed9dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 2a67cd548SShuah Khan /* crc32hash.c - derived from linux/lib/crc32.c, GNU GPL v2 */ 3a67cd548SShuah Khan /* Usage example: 4a67cd548SShuah Khan $ ./crc32hash "Dual Speed" 5a67cd548SShuah Khan */ 6a67cd548SShuah Khan 7a67cd548SShuah Khan #include <string.h> 8a67cd548SShuah Khan #include <stdio.h> 9a67cd548SShuah Khan #include <ctype.h> 10a67cd548SShuah Khan #include <stdlib.h> 11a67cd548SShuah Khan crc32(unsigned char const * p,unsigned int len)12a67cd548SShuah Khanstatic unsigned int crc32(unsigned char const *p, unsigned int len) 13a67cd548SShuah Khan { 14a67cd548SShuah Khan int i; 15a67cd548SShuah Khan unsigned int crc = 0; 16a67cd548SShuah Khan while (len--) { 17a67cd548SShuah Khan crc ^= *p++; 18a67cd548SShuah Khan for (i = 0; i < 8; i++) 19a67cd548SShuah Khan crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0); 20a67cd548SShuah Khan } 21a67cd548SShuah Khan return crc; 22a67cd548SShuah Khan } 23a67cd548SShuah Khan main(int argc,char ** argv)24a67cd548SShuah Khanint main(int argc, char **argv) { 25a67cd548SShuah Khan unsigned int result; 26a67cd548SShuah Khan if (argc != 2) { 27a67cd548SShuah Khan printf("no string passed as argument\n"); 28a67cd548SShuah Khan return -1; 29a67cd548SShuah Khan } 30a67cd548SShuah Khan result = crc32((unsigned char const *)argv[1], strlen(argv[1])); 31a67cd548SShuah Khan printf("0x%x\n", result); 32a67cd548SShuah Khan return 0; 33a67cd548SShuah Khan } 34