I'm doing some research on the CRCs, but i can't find informations about the use of two (or more) short CRCs compared to the use of a longer CRC:

Suppose that i have a dataword A of some length and 3 different generator polynomials, 2 of degree 8 and one of degree 16. These polynomials are used respectively by CRC1, CRC2 and CRC3 algorithms, where CRC1 and CRC2 generate 8-bit codes while CRC3 generates 16-bit codes.

Suppose also that the three CRC have the same Hamming Distance for datawords of the same size.

now consider these 2 options:

  1. Compute CRC1(A)=x1 and CRC2(A)=x2 and use codeword A|x1|x2 (where '|' means concatenation);

  2. Compute CRC3(A)=y and use codeword A|y;

what are the eventual advantages and disadvantages of the first approach in respect to the second considering error detection capabilities?

Please provide also some references if you have them!

  • $\begingroup$ Please note what the problem you are solving? What are your CPU? What are your goals? $\endgroup$
    – Bulat
    Jun 28 '19 at 10:26
  • $\begingroup$ @Bulat I have edited the question, the performance isn't a problem, the focus is on error detection capabilities of the two options $\endgroup$ Jun 28 '19 at 10:32
  • $\begingroup$ CRC's that can detect a higher number of bit errors tend to be the product of multiple polynomials, so similar to the idea of using multiple CRC, but can guarantee some number of bit errors will always be detected if the message length is limited. There is a table of such CRC polynomials versus Hamming Distance versus message length at crc zoo. $\endgroup$
    – rcgldr
    Apr 4 '20 at 2:37

Ok, i found what i was searching in a paper "Selection of Cyclic Redundancy Code and Checksum Algorithms to Ensure Critical Data Integrity" https://www.faa.gov/aircraft/air_cert/design_approvals/air_software/media/TC-14-49.pdf

in Section 5.7 we can read that: "[...] Based on the results of this study and a literature review, there is no evidence that multiple error codes on the same dataword increase HD. However, adding more bits of error-detection code does tend to increase the coverage at that HD by creating more bits that must be randomly matched to form a valid codeword. Quantifying such a gain requires careful analysis of common-mode undetected error patterns for the multiple error coding schemes used, with a caution that pure mathematical analysis is prone to subtle errors and should always be validated via Monte Carlo simulation."

So the answer to my question is that it's impossible to select the best option unless they have been evaluated through mathematical analysis and subsequent experimental validation :(


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.