title: Confirmation of Reverse Reciprocal CRC-8 Value?
body: <p>I've spent quite a bit of time trying to confirm the type of CRC-8 algorithm used in ASCII data communications between two devices. I have confirmed that the CRC is calculated on the 0x02 Start of text byte + the next byte of data.  An Interface Design Document that I have describing one device specifies the use of a 0xEA polynomial with an initial value of 0xFF.  An example of one captured message is below:</p>
  
  <p><strong>Input Bytes:</strong> 0x02 0x41</p>
  
  <p><strong>CRC Result:</strong> b10011011 or 0x9B</p>
  
  <p>Going into the problem, I had little to no knowledge of the inner working of a typical CRC algorithm.  Initially, I tried hand calculation against the input bytes to confirm my understanding of the algo before attempting a code solution. This involved XORing the 1st input byte with my 0xFF initial value and then skipping to the second input byte to continue the XOR operations.</p>
  
  <p>Having tried multiple times to confirm the CRC through typical XOR operations while shifting the MSB left out of the register during each step, I could never get the results I wanted.  Today, I realized that the 0xEA polynomial is also considered to be a reversed reciprocal of the 0xD5 poly with an implied 1+x^8 that is commonly used in CRC-8 algos.  How does this fact change how I would go about manually calculating the CRC?  I've read that in some instances a reverse leads to the algo right shifting bits instead of left shifting?   </p>