jrzgy.com-四虎精彩成人永久免费中文字幕,国产欧美另类精品久久久,精品美女AⅤ国产女教师,好好日夜夜操视频,2020年国产精品久久久久精品,蜜桃国产乱码精品一区二区三区,久久6妺妺窝人体色www图片,色欲香天天综合网无码

歡迎您訪問鄭州興邦電子股份有限公司官方網站!
阿里巴巴誠信通企業
全國咨詢熱線:40000-63966
興邦電子,中國水控機第一品牌

聯系興邦電子

全國咨詢熱線:40000-63966

售后:0371-55132951/55132952

工廠:河南省 鄭州市 高新區蓮花街電子電器產業園

PBOC/EMV之TLV編碼與解碼

文章出處:http://www.jrzgy.com 作者: 人氣: 發表時間:2012年03月15日

[文章內容簡介]:幾乎所有的需要在卡片和終端之間傳送的數據都是TLV格式的.PBOC文檔里并沒有對TLV編碼細節做具體說明,而EMV的手冊里雖有敘述,但并不詳細.我下面就要很詳細的分析TLV的編碼格式并給出相應的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域占最多占兩個字節. 編碼規則如下面兩幅圖


    解釋一下這兩幅圖. 第一個圖是第一個字節的編碼規則. b8和b7兩位標識tag所屬類別. 這個可以暫時不用理. b6決定當前的TLV數據是一個單一的數據和復合結構的數據. 復合的TLV是指value域里也包含一個或多個TLV, 類似嵌套的編碼格式. b5~b1如果全為1,則說明這個tag下面還有一個子字節. 占兩個字節, 否則tag占一個字節.

    第二幅圖是說明如果tag占用兩個字節, 第二個字節的編碼格式. B8決定tag是否還有后緒的字節存在,因為前面說過,PBOC/EMV里的tag最多占兩個字節, 所以該位保持為0.

    清楚了上面tag編碼格式,可很容易寫出tag域解碼的代碼了. 假設,終端接收到一人字節串,這個字節串保存在tlvData的字節數組里, 偽代碼如下:

    if ( (tlvData[i]&0x20) != 0x20)//單一結構

       {

              if ( (tlvData[i]&0x1f) == 0x1f)//tag兩字節

              {

                     tagIndex++;

                    

                     //解析length域

                     //解析value域

              }

              else//tag單字節

              {

                     //解析length域

                     //解析value域

              }

       }

       else//復合結構

       {

              //復合結構可以考慮用遞歸的方法來實現.

       }

    Length域的編碼比較簡單,最多有四個字節, 如果第一個字節的最高位b8為0, b7~b1的值就是value域的長度. 如果b8為1, b7~b1的值指示了下面有幾個子字節. 下面子字節的值就是value域的長度.

    Value域的編碼格式要根據具體的value所表示的數據元決定. 比如AID是由RID+PIX構成等. 這個不詳述. 有了上面的知識,基本上可以寫一個TLV解碼器出來了.

本文關鍵詞:PBOC,EMV,TLV編碼,編碼,TLV
回到頂部
主站蜘蛛池模板: 舞钢市| 庄河市| 淮北市| 荃湾区| 广河县| 伽师县| 大冶市| 庆阳市| 班戈县| 西吉县| 汝南县| 凤台县| 昌江| 和龙市| 富裕县| 于都县| 新平| 东至县| 永新县| 禄丰县| 交口县| 开鲁县| 博罗县| 天峻县| 三台县| 拉孜县| 阿拉尔市| 茶陵县| 静乐县| 曲靖市| 四平市| 盐津县| 论坛| 吉首市| 屏山县| 轮台县| 海南省| 济源市| 兴和县| 西峡县| 宜昌市|