Type-length-value

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

TLV (Type-length-value) je obecný název pro formát dat, která jsou složena z řady bloků:

* Značka (anglicky type nebo tag) - číslo popisující typ dat v daném bloku; například „textový řetězec“ * Délka (anglicky length) - číslo udávající délku dat v daném bloku; například „4 byte“ * Data daného bloku; například „Ahoj“

Struktury TLV obvykle používají binární formát dat, často jsou zaměřené na optimalizaci objemu a rychlosti zpracování dat. Používají se také pro přenos nekonečného proudu dat, například v telekomunikacích.

Známým příkladem použití struktury typu TLV je standard ASN.1.

BER-TLV

Formátu BER-TLV se používá v kryptografii, například pro ukládání datových objektů na čipových kartičkách. Je popsán v ISO/IEC 7816, část 4, kapitola 5. +more2 (datové objekty). Některé značky popisuje také ISO/IEC 7816.

Struktura:

* libovolněkrát trojice: značka - délka dat - data * v datovém objektu na začátku/na konci/mezi jednotlivými TLV bloky mohou být bajty s hodnotou 0x00 (padding, vata) * značka: přímo binární hodnota značky ** jednobajtová značka: A, kde A & 0x1F != 0x1F (pět nejméně významných bitů nesmí být pět jedniček) ** dvoubajtová značka: A C, kde A & 0x1F

0x1F a C < 0x80 ** tříbajtová značka: A B C, kde A & 0x1F

0x1F, B >= 0x80 a C < 0x80 * délka ** jednobajtová délka: A, kde A < 0x80; A je délka dat (binární číslo) ** dvoubajtová délka: 0x81 A; A je délka dat (binární číslo) ** tříbajtová délka: 0x82 A B; AB je délka dat (binární číslo) ** čtyřbajtová délka: 0x83 A B C; ABC je délka dat (binární číslo) ** pětibajtová délka: 0x84 A B C D; ABCD je délka dat (binární číslo) * data, například: ** textový řetězec v kódování v utf-8 ** číslo - číslo binárně (4 byte) ** datum: YYYYMMDD, kde YYYY je rok, MM je měsíc a DD je den v měsíci (textově) ** vložená BER-TLV hodnota ** a další (teoreticky cokoli)

Formát značky:

* délka značky může být 1 až 3 bajty, vyšší hodnoty jsou rezervovány pro budoucí použití * hodnota značky nesmí být 0x00 * 8. a 7. +more bit je nastaven na hodnotu 00 - univerzální třída značky; hodnota značky není definována v ISO/IEC 7816, význam značky nezávisí na kontextu (na pozici v datovém objektu) * 8. a 7. bit je nastaven na hodnotu 01 - aplikační třída značky; hodnota značky musí být definována v ISO/IEC 7816, část 6 * 8. a 7. bit je nastaven na hodnotu 10 - třída značky závislá na kontextu; hodnota značky je definována v ISO/IEC 7816 * 8. a 7. bit je nastaven na hodnotu 11 - soukromá třída značky; hodnota značky není definována v ISO/IEC 7816 * 6. bit je nastaven na 1 - data v daném TLV bloku jsou strukturovaná (tj. jsou ve formátu BER-TLV) * 6. bit je nastaven na 0 - data v daném TLV bloku nejsou strukturovaná (tj. nejsou ve formátu BER-TLV) * 5. až 1. bit jsou nastaveny na 11111 (0x1F) - délka značky je delší než 1 byte ** druhý byte nesmí nabývat hodnot 0x80 a 0x00 až 0x1E ** u další bytů značky s výjimkou posledního je nastaven 8. bit na hodnotu 1 ** u posledního bytů značky je nastaven 8. bit na hodnotu 0 * 5. až 1. bit jsou nastaveny na jinou hodnotu než 11111 - délka značky je 1 byte.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top