Why using Generator polynomial like this G(x) =x^8 +x^2 +x+1 for CRC-8. If this is optimal How can we prove it. or using this Polynomial G(x) = x^5 + x^4 + x^2 + 1 for CRC-5-ITU.
Why using Generator polynomial like this x^8 +x^2 +x+1 for CRC-8?
2.6k Views Asked by hussein_moh At
1
There are 1 best solutions below
Related Questions in CRC
- how to add CRC to pymodbus RTU message?
- How to find checksum (CRC16?) for messages
- How does a program know I have attempted to alter a license file?
- What does "CRC presented high byte first" mean exactly?
- maximum degree of generator polynomial (CRC) in CAN Bus
- Implementing a CRC algorithm in Python using crcmod
- Need help understanding weird checksum or CRC
- CRC with bit-wise operations in Dart
- Where do I add a zero as padding for 4B5B code?
- Generate a simple consistent pseudo-random number from same seed across different .Net version
- Parallel CRC polynomial
- How does Scapy disable the FCS?
- Calculating CRC for UART transmission LSB or MSB?
- STM32G030 / CRC_DR / how to use 32bit writes?
- CRC_POLYLENGTH_16B undeclared in STM32F030CCTx
Related Questions in CRC32
- Replicating C# CRC32 generator in JavaScript
- what is the purpose of second argument in PKZIP CRC32()?
- Why do i get more 256 false positive in PKZIP Decryption key verification?
- How to get updates from gitlab API if topics changed?
- CRC32 checksum in Excel
- What is the CRC32 Collision probability of All possible ASCII strings of variable length ranging from 1 to 7
- common setup for python crc (6.1.1) and stm32 hardware CRC unit?
- Why crc32(0) = 1696784233
- Compute POSIX CRC in batches
- Why is my InputStream not reading all bytes of a specified file? (CRC32 archive validation)
- CRC computation port from C to Python
- How to verify a CRC in receiver terminal?
- Problem in converting a Python code to Delphi
- Install yEnc - Python
- Uppy to tus.io file checksums in Node.js
Related Questions in CRC16
- How to find checksum (CRC16?) for messages
- CRC-16 polynomial notation
- What does "CRC presented high byte first" mean exactly?
- pymodbus read_coils return missing 1byte CRC
- Which CRC algorithm must be used to query the Tamper Tag status from a NTag213?
- How to verify a CRC in receiver terminal?
- DEX/UCS - G85 - Record Integrity Check
- What kind of CRC16 is this?
- Correct way of checking CRC
- Decoding an unknown CRC in an HDLC packet
- Implementing Custom CRC-16 in Python to Replicate MATLAB's comm.CRCGenerator Behavior
- What is better crc8 or crc16?
- How to reverse the output of crc.crc16ccitt to the original input?
- Data Transmission CRC, differentiation of CRC/FALSE
- C# CRC16 implementation help right shift vs left shift
Related Questions in ERROR-DETECTION
- Hamming code error detection and correction
- VS Code IntelliSense for C++ does not work if the project directory is a symlink
- Redundant storage using CRC
- Post-inversion of CRC32 result and trailing zeroes
- Is there any bit level error detection algorithm that use minimum extra bits?
- Hamming code conversion from character ASCII to hex string
- Flimsy error detection methods (computer networks)
- Do we really need 1s complement?
- Does Nesting CRC calculations increase reliability (ie decrease error probability)?
- nVim disable error detection of coc plugin
- vscode isn't recognizing react's functions import missing problems
- Reed-Solomon detection capability
- are CRC generator bits same for all?
- Compile-time check of conversion from a string?
- Is there a python function for locating multiple identical values in a row in a time series data set?
Related Questions in CRC64
- Cyclic Redundancy check : Single and double bit error
- unable to get the following part in CRC implementation in c++
- CRC64 calculation in VB
- Identifying polynomial terms of the CRC
- whole file CRC computation undetected error probability
- Cyclic Redundancy Check: Single and double bit error
- CRC error detection and undetected error probabilities
- Generating of the polynomial key for crc
- Most efficent way to calculate CRC64 with reflected input
- Crc64 LSB based reverse implementation
- How to generate Crc-64 table having all negative integer Constants and checksum?
- CRC implementation in Hardware for multi-bit data
- Read and Write from serial port gives "OUTPUT_BUFFER_EMPTY" (maybe crc calc and checksum is not correct)
- Mysql Performance Impact with long integer field
- CRC ECMA-182 reference
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
The polynomial chosen determines the error detection capability of the CRC. This capability is measured in Hamming Distance, which is the minimum number of bit errors that can be introduced in the message while leaving the CRC unchanged. This would be a false positive, where the CRC says the message is ok, but it isn't. Also important is how many such bit patterns exist at each number of bit errors, called the Hamming Weight. This determines the probability than an error of n bits results in a false positive.
Exhaustive searches over all possible polynomials have been done by Koopman, et al, to find the those with the largest Hamming Distances and smallest Hamming Weights for various message lengths. As an example, the degree-8 polynomial you quote, used in the ITU-T Recommendation I.432.1 CRC, is good, but not the best you could pick. The polynomial x8+x6+x3+x2+1 provides a Hamming Distance of 3 for longer messages. These two pages provide Koopman's most recent results.
Another answer here suggests that "the optimal polynomial depends on the input data set used." The only aspect of the data that the error detection capability of a CRC polynomial depends on is the length of the block on which the CRC is applied. Due to the linearity property of CRC's, the error detection capability is in fact completely independent of the data in the message. If you exclusive-or two messages of the same length, then the CRC of that new message will be the exclusive-or of the CRC's of the original two messages. So once you find the minimum set of errors that leave the CRC unchanged, then that set of errors can be applied to any message of the same length to get a false-positive.