10 .TH crc32 3 "8 May 1999" "Straylight/Edgeware" "mLib utilities library"
12 crc32 \- calculate 32-bit CRC
16 .B "#include <mLib/crc32.h>"
18 .BI "uint32 crc32(uint32 " crc ", const void *" buf ", size_t " sz );
19 .BI CRC32( result ", " crc ", " buf ", " sz )
24 function calculates a 32-bit cyclic redundancy check of the data block
31 The function is restartable. For a first call, pass zero as the value
34 argument; for subsequent blocks, pass in the previous output. The final
35 answer is equal to the result you'd get from computing a CRC over the
36 concatenation of the individual blocks.
40 macro calculates a CRC inline. The calculated CRC value is placed in
43 Only use the macro version when efficiency is a major concern: it makes
44 the code rather harder to read.
46 Note that a CRC is not cryptographically strong: it's fairly easy for an
47 adversary to construct blocks of data with any desired CRC, or to modify
48 a given block in a way which doesn't change its (unknown) CRC.
50 The exact behaviour of the CRC is beyond the scope of this manual;
51 suffice to say that the result is, in some suitable representation, the
52 remainder after division by a degree-32 polynomial in GF(2)[x].
54 The return value is the 32-bit CRC of the input block.
58 Mark Wooding, <mdw@nsict.org>