30 December 2007 08:49:27 AM CRC_PRB C++ version Test CRC routines. TEST01 MAKE_CRC_TABLE sets up the 256 entry CRC table. Each entry is an unsigned long integer. We'll print signed versions of the entries. CRC_TABLE N dec(CRC(N)) hex(CRC(N)) 0 0 0 1 77073096 77073096 2 ee0e612c ee0e612c 3 990951ba 990951ba 4 76dc419 76dc419 5 706af48f 706af48f 6 e963a535 e963a535 7 9e6495a3 9e6495a3 8 edb8832 edb8832 9 79dcb8a4 79dcb8a4 a e0d5e91e e0d5e91e b 97d2d988 97d2d988 c 9b64c2b 9b64c2b d 7eb17cbd 7eb17cbd e e7b82d07 e7b82d07 f 90bf1d91 90bf1d91 10 1db71064 1db71064 11 6ab020f2 6ab020f2 12 f3b97148 f3b97148 13 84be41de 84be41de 14 1adad47d 1adad47d 15 6ddde4eb 6ddde4eb 16 f4d4b551 f4d4b551 17 83d385c7 83d385c7 18 136c9856 136c9856 19 646ba8c0 646ba8c0 1a fd62f97a fd62f97a 1b 8a65c9ec 8a65c9ec 1c 14015c4f 14015c4f 1d 63066cd9 63066cd9 1e fa0f3d63 fa0f3d63 1f 8d080df5 8d080df5 20 3b6e20c8 3b6e20c8 21 4c69105e 4c69105e 22 d56041e4 d56041e4 23 a2677172 a2677172 24 3c03e4d1 3c03e4d1 25 4b04d447 4b04d447 26 d20d85fd d20d85fd 27 a50ab56b a50ab56b 28 35b5a8fa 35b5a8fa 29 42b2986c 42b2986c 2a dbbbc9d6 dbbbc9d6 2b acbcf940 acbcf940 2c 32d86ce3 32d86ce3 2d 45df5c75 45df5c75 2e dcd60dcf dcd60dcf 2f abd13d59 abd13d59 30 26d930ac 26d930ac 31 51de003a 51de003a 32 c8d75180 c8d75180 33 bfd06116 bfd06116 34 21b4f4b5 21b4f4b5 35 56b3c423 56b3c423 36 cfba9599 cfba9599 37 b8bda50f b8bda50f 38 2802b89e 2802b89e 39 5f058808 5f058808 3a c60cd9b2 c60cd9b2 3b b10be924 b10be924 3c 2f6f7c87 2f6f7c87 3d 58684c11 58684c11 3e c1611dab c1611dab 3f b6662d3d b6662d3d 40 76dc4190 76dc4190 41 1db7106 1db7106 42 98d220bc 98d220bc 43 efd5102a efd5102a 44 71b18589 71b18589 45 6b6b51f 6b6b51f 46 9fbfe4a5 9fbfe4a5 47 e8b8d433 e8b8d433 48 7807c9a2 7807c9a2 49 f00f934 f00f934 4a 9609a88e 9609a88e 4b e10e9818 e10e9818 4c 7f6a0dbb 7f6a0dbb 4d 86d3d2d 86d3d2d 4e 91646c97 91646c97 4f e6635c01 e6635c01 50 6b6b51f4 6b6b51f4 51 1c6c6162 1c6c6162 52 856530d8 856530d8 53 f262004e f262004e 54 6c0695ed 6c0695ed 55 1b01a57b 1b01a57b 56 8208f4c1 8208f4c1 57 f50fc457 f50fc457 58 65b0d9c6 65b0d9c6 59 12b7e950 12b7e950 5a 8bbeb8ea 8bbeb8ea 5b fcb9887c fcb9887c 5c 62dd1ddf 62dd1ddf 5d 15da2d49 15da2d49 5e 8cd37cf3 8cd37cf3 5f fbd44c65 fbd44c65 60 4db26158 4db26158 61 3ab551ce 3ab551ce 62 a3bc0074 a3bc0074 63 d4bb30e2 d4bb30e2 64 4adfa541 4adfa541 65 3dd895d7 3dd895d7 66 a4d1c46d a4d1c46d 67 d3d6f4fb d3d6f4fb 68 4369e96a 4369e96a 69 346ed9fc 346ed9fc 6a ad678846 ad678846 6b da60b8d0 da60b8d0 6c 44042d73 44042d73 6d 33031de5 33031de5 6e aa0a4c5f aa0a4c5f 6f dd0d7cc9 dd0d7cc9 70 5005713c 5005713c 71 270241aa 270241aa 72 be0b1010 be0b1010 73 c90c2086 c90c2086 74 5768b525 5768b525 75 206f85b3 206f85b3 76 b966d409 b966d409 77 ce61e49f ce61e49f 78 5edef90e 5edef90e 79 29d9c998 29d9c998 7a b0d09822 b0d09822 7b c7d7a8b4 c7d7a8b4 7c 59b33d17 59b33d17 7d 2eb40d81 2eb40d81 7e b7bd5c3b b7bd5c3b 7f c0ba6cad c0ba6cad 80 edb88320 edb88320 81 9abfb3b6 9abfb3b6 82 3b6e20c 3b6e20c 83 74b1d29a 74b1d29a 84 ead54739 ead54739 85 9dd277af 9dd277af 86 4db2615 4db2615 87 73dc1683 73dc1683 88 e3630b12 e3630b12 89 94643b84 94643b84 8a d6d6a3e d6d6a3e 8b 7a6a5aa8 7a6a5aa8 8c e40ecf0b e40ecf0b 8d 9309ff9d 9309ff9d 8e a00ae27 a00ae27 8f 7d079eb1 7d079eb1 90 f00f9344 f00f9344 91 8708a3d2 8708a3d2 92 1e01f268 1e01f268 93 6906c2fe 6906c2fe 94 f762575d f762575d 95 806567cb 806567cb 96 196c3671 196c3671 97 6e6b06e7 6e6b06e7 98 fed41b76 fed41b76 99 89d32be0 89d32be0 9a 10da7a5a 10da7a5a 9b 67dd4acc 67dd4acc 9c f9b9df6f f9b9df6f 9d 8ebeeff9 8ebeeff9 9e 17b7be43 17b7be43 9f 60b08ed5 60b08ed5 a0 d6d6a3e8 d6d6a3e8 a1 a1d1937e a1d1937e a2 38d8c2c4 38d8c2c4 a3 4fdff252 4fdff252 a4 d1bb67f1 d1bb67f1 a5 a6bc5767 a6bc5767 a6 3fb506dd 3fb506dd a7 48b2364b 48b2364b a8 d80d2bda d80d2bda a9 af0a1b4c af0a1b4c aa 36034af6 36034af6 ab 41047a60 41047a60 ac df60efc3 df60efc3 ad a867df55 a867df55 ae 316e8eef 316e8eef af 4669be79 4669be79 b0 cb61b38c cb61b38c b1 bc66831a bc66831a b2 256fd2a0 256fd2a0 b3 5268e236 5268e236 b4 cc0c7795 cc0c7795 b5 bb0b4703 bb0b4703 b6 220216b9 220216b9 b7 5505262f 5505262f b8 c5ba3bbe c5ba3bbe b9 b2bd0b28 b2bd0b28 ba 2bb45a92 2bb45a92 bb 5cb36a04 5cb36a04 bc c2d7ffa7 c2d7ffa7 bd b5d0cf31 b5d0cf31 be 2cd99e8b 2cd99e8b bf 5bdeae1d 5bdeae1d c0 9b64c2b0 9b64c2b0 c1 ec63f226 ec63f226 c2 756aa39c 756aa39c c3 26d930a 26d930a c4 9c0906a9 9c0906a9 c5 eb0e363f eb0e363f c6 72076785 72076785 c7 5005713 5005713 c8 95bf4a82 95bf4a82 c9 e2b87a14 e2b87a14 ca 7bb12bae 7bb12bae cb cb61b38 cb61b38 cc 92d28e9b 92d28e9b cd e5d5be0d e5d5be0d ce 7cdcefb7 7cdcefb7 cf bdbdf21 bdbdf21 d0 86d3d2d4 86d3d2d4 d1 f1d4e242 f1d4e242 d2 68ddb3f8 68ddb3f8 d3 1fda836e 1fda836e d4 81be16cd 81be16cd d5 f6b9265b f6b9265b d6 6fb077e1 6fb077e1 d7 18b74777 18b74777 d8 88085ae6 88085ae6 d9 ff0f6a70 ff0f6a70 da 66063bca 66063bca db 11010b5c 11010b5c dc 8f659eff 8f659eff dd f862ae69 f862ae69 de 616bffd3 616bffd3 df 166ccf45 166ccf45 e0 a00ae278 a00ae278 e1 d70dd2ee d70dd2ee e2 4e048354 4e048354 e3 3903b3c2 3903b3c2 e4 a7672661 a7672661 e5 d06016f7 d06016f7 e6 4969474d 4969474d e7 3e6e77db 3e6e77db e8 aed16a4a aed16a4a e9 d9d65adc d9d65adc ea 40df0b66 40df0b66 eb 37d83bf0 37d83bf0 ec a9bcae53 a9bcae53 ed debb9ec5 debb9ec5 ee 47b2cf7f 47b2cf7f ef 30b5ffe9 30b5ffe9 f0 bdbdf21c bdbdf21c f1 cabac28a cabac28a f2 53b39330 53b39330 f3 24b4a3a6 24b4a3a6 f4 bad03605 bad03605 f5 cdd70693 cdd70693 f6 54de5729 54de5729 f7 23d967bf 23d967bf f8 b3667a2e b3667a2e f9 c4614ab8 c4614ab8 fa 5d681b02 5d681b02 fb 2a6f2b94 2a6f2b94 fc b40bbe37 b40bbe37 fd c30c8ea1 c30c8ea1 fe 5a05df1b 5a05df1b ff 2d02ef8d 2d02ef8d TEST02 CRC computes the CRC of a string of bytes. The original string: "Dr. Crypto" For the original string, CRC = 5789e117 (dec) = 5789e117 (hex) The modified string: "Dr.C rypto" After swapping C[3] and C[4], CRC = 1672989339 (dec) = 63b7ca9b (hex) After incrementing C[5] by 1: The modified string: "Dr. Csypto" CRC = 1793706151 (dec) = 6ae9c8a7 (hex) Using just the first LEN-1 values: CRC = 1451369816 (dec) = 56822558 (hex) TEST03 UPDATE_CRC_S computes the running CRC by processing a part of the string at a time. This should be the same as computing the full CRC. The original string: "Dr. Crypto" One step CRC: CRC = 1367794603 (dec) = 5186e3ab (hex) Incremental CRC: CRC = 1367794603 (dec) = 5186e3ab (hex) TEST04 UPDATE_CRC_C computes the running CRC one byte at a time. This should be the same as computing the full CRC. The original string: "Dr. Crypto" One step CRC: CRC = 1367794603 (dec) = 5186e3ab (hex) CRC computed one byte at a time: CRC = 1367794603 (dec) = 5186e3ab (hex) CRC_PRB Normal end of execution. 30 December 2007 08:49:27 AM