SIMPLE-TLV vs BER-TLV
Odkryłem w dokumentach, że odnoszą się one do SIMPLE-TLV i BER-TLV . Byłem spojrzeć na większość EMV i GP docs, ale nie wspominali inaczej.
Czy ktoś mógłby mi pomóc zrozumieć różnicę dwóch ?
2 answers
Pola danych w ISO / IEC 7816-4 dla kart inteligentnych
Kodowanie BER
[[7]} jest to specyfikacja bardziej powszechnego kodowania BER używanego przez ISO/IEC 7816-4:Każdy obiekt danych BER-TLV składa się z 2 lub 3 kolejnych pól (zob. ISO / IEC 8825 i załącznik D).
Pole znacznika T składa się z jednego lub więcej kolejnych bajtów. Koduje Klasa, typ i numer. Pole długości składa się z jednego lub więcej kolejne bajty. Koduje liczba całkowita L. Jeśli L nie jest null, to pole wartości V składa się z L kolejnych bajtów. Jeśli L jest null, to obiekt data jest pusty: nie ma pola value.
Należy zauważyć, że ISO / IEC 7816 zezwala tylko na użycie do 5 bajtów długości (określając rozmiar do 2^32-1 bajtów) w bieżącym standardzie. Kodowanie o nieokreślonej długości również nie jest obsługiwane. Ograniczenia te są specyficzne dla kart inteligentnych.
Specyfikacja BER TLV jest znacznie bardziej rozbudowana, jako "prosta" część SIMPLE-TLV wskazuje. Nie będę wdawać się zbytnio w szczegóły, ponieważ w Internecie jest mnóstwo informacji.
Normalnie BER powinien być używany tylko jako kodowanie ASN.1997: ASN1 składnia definiująca strukturę. ISO 7816-4 jednak psuje to i określa bezpośrednio tylko bajty znacznika BER.
Zauważ, że czasami zamiast BER podaje się DER. W takim przypadku wielu używa tylko minimalnej liczby bajtów dla rozmiaru pola length - np. 05
w próbkach poniżej. Należy również zauważyć, że specyfikacja ISO / IEC kodowania BER jest zasadniczo kopią standardu X. 690.
Kodowanie SIMPLE-TLV
Specyfikacja BER po niej następuje Specyfikacja SIMPLE-TLV, która jest specyficzna dla ISO 7816-4. Zauważ, że standard zapomina o bezpośrednim określeniu endianness. Można założyć kodowanie big endian w ISO / IEC 7816-4.
Każdy obiekt danych SIMPLE-TLV składa się z 2 lub 3 kolejnych pola.
Pole znacznika T składa się z pojedynczego bajtu kodującego tylko liczbę z Od 1 do 254 (np. identyfikator rekordu). Koduje bez klasy i nie Typ konstrukcyjny. Pole długości składa się z 1 lub 3 kolejnych bajtów. Jeśli bajt wiodący pola length znajduje się w zakresie od "00" do "FE" , wówczas pole length składa się z kodowania pojedynczego bajtu liczba całkowita l o wartości od 0 do 254. Jeśli bajt wiodący jest równy 'FF', następnie pole długości jest kontynuowane na dwóch kolejne bajty które kodują liczbę całkowitą L o wartości od 0 do 65535. If L in not null, wtedy pole wartości V składa się z kolejnych bajtów. Jeśli L jest null, wtedy obiekt danych jest pusty: nie ma pola value.
Próbki
Wszystkie poniższe próbki są używane do przekazania tego samego numeru znacznika (który definiuje pole) i wartości, z wyjątkiem jednego, który definiuje numer znacznika 31 DLA BER.
Sample SIMPLE-TLV
0F 05 48656C6C6F // tag number 15, length 5 then the value
0F FF0005 48656C6C6F // tag number 15, length 5 (two bytes), then the value
Próbka BER-TLV:
4F 05 48656C6C6F // *application specific*, primitive encoding of tag number 15, length 5 then the value
4F 8105 48656C6C6F // the same, using two bytes to encode the length
4F 820005 48656C6C6F // the same, using three bytes to encode the length
4F 83000005 48656C6C6F // the same, using four bytes to encode the length
4F 8400000005 48656C6C6F // the same , using five bytes to encode the length
5F0F 05 48656C6C6F // **invalid** encoding of the same, with two bytes for the tag, specifiying a tag number 15 which is smaller than 31
5F1F 05 48656C6C6F // application specific, primitive encoding of **tag number 31**
Różnice
Należy zauważyć następujące różnice:
- W przeciwieństwie do TLV, TLV może być używany do kodowania znaczników i długości (np. przy użyciu pojedynczego bajtu do wskazania części długości).]}
- SIMPLE-TLV nie zawiera informacji o klasie pola, np. jeśli jest ono zdefiniowane dla ASN.1 (ponieważ nie jest powiązany z ASN.1)
- SIMPLE-TLV nie zawiera informacji, jeśli jest w przeciwieństwie do poprzednich wersji, nie jest to możliwe.]} W przeciwieństwie do poprzednich wersji, TLV nie posiada znaczników, które mogą być używane tylko do celów reklamowych.]}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-24 17:58:37
Prosty TLV składa się po prostu ze znacznika( lub typu), długości i wartości.
BER-TLV jest specjalnym TLV, który ma jeden lub więcej TLV wewnątrz swojej wartości. Więc ma strukturę kompozytową.Tag1 Len1 Tag2-Len2-Value2 Tag3-Len3-Value3 ... TagN-LenN-ValueN
------------------------Value1------------------------
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-19 08:02:54