I have obtained the CRC-64 code used in the SWISS-PROT genetic
database:
ftp://ftp.ebi.ac.uk/pub/software/swissprot/Swissknife/SPcrc.tar.gz
(Thanks go to Henning Hermjakob <hhe@ebi.ac.uk> of the European
Bioinformatics Institute.) From the README:
The code in this package has been derived from the BTLib package obtained from Christian Iseli
<chris@ludwig-alpha.unil.ch>.From his mail:
The reference is: W. H. Press, S. A. Teukolsky, W. T. Vetterling, and B. P. Flannery, "Numerical recipes in C", 2nd
ed.,Cambridge University Press. Pages 896ff.
The generator polynomial is x64 + x4 + x3 + x1 + 1.
Choosing a good polynomial is considered a black art. A good tutorial
on CRC practice is at
http://www.repairfaq.org/filipg/LINK/F_crc_v3.html
and there's a clear exposition of the theory in Tanenbaum's
"Computer Networks". Note that initialization is important, and
often neglected: one quality to check is, does a block of all zeroes,
and a zero CRC, come out as an error?
Nathan Myers
ncm@zembu.com