計算機tlv簡介 TLV 格式及編碼

2021-10-13 11:50:42 字數 1703 閱讀 6763

tlv

格式及編碼

幾乎所有的需要在卡片和終端之間傳送的資料都是

tlv格式的

. pboc

文件裡並沒有對

tlv編碼細節做具體說明

而emv

的手冊裡雖有敘述,

但並不詳細

***就要很詳細的分

析tlv

的編碼格式並給出相應的

tlv解碼的偽**

tlv是

tag,

length

和value

的縮寫乙個基本的資料元就包括上面三個域

tag唯一標

識該資料元

, length

是value

域的長度

. value

就是資料本身了

舉個例子

下面是乙個

tlv格式的

aid(應用識別符號)位元組串」

9f0607a0000000031010

其中9f06

是tag, 07

是長度,  a0000000031010

就是aid

本身的值了

對於程式編寫人員來說,

我們關心的是,

如果有類似上面這樣的一串

tlv編碼的位元組串

從卡片傳過來

怎麼樣從中提取我們想要的資料

這就牽扯出

tlv解碼的問題了

其中ber-tlv

編碼是iso

定義一種規範

然後到了

pboc/emv

裡被簡化了

**被簡化

了呢舉乙個例子

, tag

域在iso

裡可以有多個位元組

而pboc/emv

裡規定只用前兩個位元組

***要講的

tlv解碼就是基於

pboc/emv

的簡化版本

首先看一下

tag域是怎樣編碼的

. tag

域佔最多佔兩個位元組

編碼規則如下面兩幅圖:

圖1>

圖1>

解釋一下這兩幅圖

第乙個圖是第乙個位元組的編碼規則

. b8和b7

兩位標識

tag所屬

類別這個可以暫時不用理

.  b6

決定當前的

tlv資料是乙個單一的資料和復合結構的數

據復合的

tlv是指

value

域裡也包含乙個或多個

tlv,

類似巢狀的編碼格式

b5~b1

如果全為

,則說明這個

tag下面還有乙個子位元組

佔兩個位元組

否則tag

佔乙個位元組

第二幅圖是說明如果

tag占用兩個位元組

第二個位元組的編碼格式

b8決定

tag是否還

有後緒的位元組存在,因為前面說過,

pboc/emv

裡的tag

最多佔兩個位元組

所以該位保持為

0.清楚了上面

tag編碼格式

可很容易寫出

tag域解碼的**了

假設,終端接收到一人

位元組串,這個位元組串儲存在

tlvdata

的位元組陣列裡

偽**如下

TLV格式及編碼

幾乎所有的需要在卡片和終端之間傳送的資料都是tlv格式的.pboc文件裡並沒有對tlv編碼細節做具體說明,而emv的手冊裡雖有敘述,但並不詳細.我下面就要很詳細的分析tlv的編碼格式並給出相應的tlv解碼的偽 tlv是tag,length和value的縮寫.乙個基本的資料元就包括上面三個域.tag唯...

TLV格式及編碼

幾乎所有的需要在卡片和終端之間傳送的資料都是tlv格式的.tlv是tag,length和value的縮寫.乙個基本的資料元就包括上面三個域.tag唯一標識該資料元,length是value域的長度.value就是資料本身了.舉個例子,下面是乙個tlv格式的aid 應用識別符號 位元組串 9f0607...

TLV 格式及編譯碼示例

tlv是一種可變格式,意思就是 type型別,lenght長度,value值 type和length的長度固定,一般那是2 4個位元組 這裡統一採用4個位元組 value的長度有length指定 編碼方法 1.將型別type用htonl轉換為網路位元組順序,指標偏移 4 2.將長度length用ht...