Szukam sprawdzonego sposobu obliczania CRC dla pakietów 132 bajtów w komunikacji RS!

Sposób wyliczania CRC ?





Poprzedni Następny
Wiadomość
Spis treści
From: "Ameba" <werkon_at_nospam_inetia.pl>
Subject: Sposób wyliczania CRC ?
Date: Wed, 11 Jul 2001 17:20:39 +0200


Witam.
Dwa urządzenia komunikują się poprzez RSa. Wymiana danych to "paczki" po 132
bajty, z czego pierwsze dwa są zawsze takie same, potem 128 bajtów danych i
2 bajty CRC. Problem polega na tym, że nie wiem w jaki sposób jest to
wyliczane. Próbowałem paru sposobów (suma bajtów, itp), ale to nie to. Może
są jakieś standardowe sposoby wyliczania CRC ???
Jakby ktoś chciał się pobawić w kryptologa to dołączam 3 takie "paczki"
(rzeczywiste dane).
Za wszelkie pmocne informacje dzięki.

Przykład nr1:

01 80 - Pierwsze dwa bajty, zawsze są takie same

Potem 128 bajtów danych.
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE
FE FE FE FE FE FE FE FE

C1 3F - dwa bajty CRC

==============================
Przykład 2: (dane analogicznie j.w)

01 80 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 88 06

==============================
Przykład 3: (dane analogicznie j.w)

01 80 01 00 00 00 01 00
00 00 08 00 00 04 07 C7
C0 C1 C0 C1 93 05 00 00
DD 1C 00 02 00 00 00 00
00 00 05 00 1A 1A 1A 1A
00 08 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A 1A 1A 1A 1A 1A 1A
1A 1A BA AB



Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: =?iso-8859-2?Q?Re:_Spos=F3b_wyliczania_CRC_=3F?=
Date: Wed, 11 Jul 2001 20:18:09 +0200


Użytkownik "Ameba" <werkon_at_nospam_inetia.pl> napisał w wiadomości
news:9ihr9k$qgi$2_at_nospam_news.internetia.pl...
Witam.
Dwa urządzenia komunikują się poprzez RSa. Wymiana danych to
"paczki" po 132
bajty, z czego pierwsze dwa są zawsze takie same, potem 128 bajtów
danych i
2 bajty CRC. Problem polega na tym, że nie wiem w jaki sposób jest
to
wyliczane. Próbowałem paru sposobów (suma bajtów, itp), ale to nie
to. Może
są jakieś standardowe sposoby wyliczania CRC ???
Jakby ktoś chciał się pobawić w kryptologa to dołączam 3 takie
"paczki"
(rzeczywiste dane).
Za wszelkie pmocne informacje dzięki.

Sprawdz tak:

#define dlugosc 128 // dlugosc bloku danych (oczywiscie
dowolna)

unsigned char BLOK[dlugosc];
unsigned int crc;

void LICZ_CRC16(unsigned char dana)
{
unsigned char i;
crc^=dana
for (i=0;i<8;i++)
{
if (crc&0x0001)
{
crc>>=1;
crc&=0x7fff;
crc^=0xa001;
} else
{
crc>>=1;
crc&=0x7fff;
}
}
void oblicz()
{
unsigned int i;
crc=0;
for(i=0; i<dlugosc; i++) LICZ_CRC16(BLOK[i]);
}



--
pozdrawiam, peters
peters_at_nospam_poczta.onet.pl
http://peters.republika.pl (strona Petersa dla elektronikow)


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Pawlow" <pp_at_nospam_siedziba.pl>
Subject: =?iso-8859-2?Q?Re:_Spos=F3b_wyliczania_CRC_=3F?=
Date: Thu, 12 Jul 2001 00:55:49 +0200


"Ameba" <werkon_at_nospam_inetia.pl> wrote:
2 bajty CRC. Problem polega na tym, że nie wiem w jaki sposób jest
to wyliczane. Próbowałem paru sposobów (suma bajtów, itp), ale to
nie to.

Wpisz sobie CRC algorithm w wyszukiwarce a znajdziesz. Kilka sekund i
jest!:
np. http://www.relisoft.com/Science/

--
Pozdrawiam,
Piotr Pawłow
mailto:pp_at_nospam_siedziba.pl, homepage: http://pp.siedziba.pl