

Task

Demonstrate a method of deriving the Cyclic Redundancy Check from within the language.



The result should be in accordance with ISO 3309, ITU-T V.42, Gzip and PNG.

Algorithms are described on Computation of CRC in Wikipedia.
This variant of CRC-32 uses LSB-first order, sets the initial CRC to FFFFFFFF16, and complements the final CRC.

For the purpose of this task, generate a CRC-32 checksum for the ASCII encoded string:

 The quick brown fox jumps over the lazy dog


(ql:quickload :ironclad)
(defun string-to-digest (str digest)
  "Return the specified digest for the ASCII string as a hex string."
  (ironclad:byte-array-to-hex-string 
    (ironclad:digest-sequence digest 
                              (ironclad:ascii-string-to-byte-array str))))
 
(string-to-digest "The quick brown fox jumps over the lazy dog" :crc32)
 