Computer Interfacing
Discussions about interfacing and electronics
 

CRC-16

which crc-16 is it?


 

       Computer Interfacing Forum Index -> Error detection and correction
Author Message
Joshua
Guest







May 31, 2008 9:19 pm

I need to code communications with a system that claims to support CRC-16 checksum algorithm. I tested the string of hexadecimal characters with your
on-line calculator and no result of any of the CRC-16 versions present matched their checksum. Here is the string of three hexadecimal characters:
03 84 90. The claimed CRC-16 checksum produced by the system: 1B 56. Is it possible that this system uses yet another version of CRC-16? Any help is greatly appreciated.

Joshua
regregex
Preferred Member



Joined: 30 Oct 2007
Posts: 184
Location: London, UK

May 31, 2008 9:52 pm

Hello Joshua, welcome to the forum.

Could you possibly tell us more about the system you're using, and possibly give some more examples so we can track down your algorithm?

Thanks

Greg
Joshua
Guest







May 31, 2008 11:47 pm

Greg,

Thank you for quick reply. The system is a transaction processor. I am communicating with it via modem link at 1200,8,n,1. I will try to get more samples of the streams and post it here.

Joshua
Joshua
Guest







Jun 02, 2008 5:56 pm

Hell Greg,

As you suggested, I am postinganother hexadecimal stream:
03 84 84 00 00 12 30 31 41 31 33 30 30 32 30 31 33 30 30 31 1C 39 30 30

The CRC is 62 BF.

Thank you for help.
Joshua
Guest








Jun 02, 2008 5:57 pm

Sorry for stupid typo.

Hello Greg, indeed.
regregex
Preferred Member



Joined: 30 Oct 2007
Posts: 184
Location: London, UK

Jun 03, 2008 3:32 pm

I've found the algorithm: it's a variant of CRC-16-IBM
Code:
   Width  : 16
   Poly   : 8005
   Init   : 0000
   RefIn  : False
   RefOut : False
   XorOut : 0000
   Check  : FEE8
(For an explanation of this record, see "A Painless Guide to CRC Error Detection Algorithms".) (Search for filename "crc_v3.txt".)
(For a generic implementation in C, see "A Painless Guide" or the Calculator page.)

The algorithm is exactly like "XMODEM" except with a different polynomial (0x8005).

Compared to all others that use 0x8005 it's strange as it runs in the opposite direction to usual and there is no presetting or final XOR. I maintain a catalogue of CRC algorithms and haven't seen this one before, hence my interest in what's using it. Any chance you could tell me the make and model of the transaction processor?? ...

HTH.

Greg
Joshua
Guest







Jun 03, 2008 5:43 pm

Greg,

Thank you very much for your help. I would never have figured it out myself.
Now to answer your question. The transaction processor is the credit card transaction processing network called Buypass. The CRC checksum is used by this network in asynchronous multi-threaded communications with the client terminals. I am developing my first software supporting the multi-threaded protocol. So far I have always dealt with the single thread asynchronous communications which use LRC checksum. I have no idea why they selected such weird modification of the common method. As a result, their tech support people themselves have no idea how that CRC checksum is derived, if you can believe it.

Best regards,
Joshua
Manuel
Guest







May 14, 2009 4:01 pm

Hi !

I know this is an old reply to this message, but I need too to identify a CRC implementation... could somebody help??

I have this 2 hex streams as examples:

02 02 FD 05 00 1C 04 03
02 08 F7 00 09 04 29 18 09 57 04 E7 B1 03

02 at beginning is STX (start of text)
03 at the end is ETX (end of text)

CRC for first stream is 1C 04
CRC for 2nd stream is E7 B1

wich implementation is used here ????

Thanks in advance!!

       Computer Interfacing Forum Index -> Error detection and correction
Page 1 of 1



Running on php BB © 2001, 2009 php BB Group
   Lammert Bies     Interfacing     Sitemap     Forum