| 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: 119 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: 119 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!! |
|