日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java智能卡 技术_java智能卡APDU学习笔记

發布時間:2025/3/12 java 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java智能卡 技术_java智能卡APDU学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因項目需要,利用APDU通信協議在ME手機端和卡端進行通訊。在實踐的過程中遇到一些問題,先記錄如下。

APDU協議,即是智能卡與讀寫器間的應用層協議,在ISO7816-4[7]中定義了該協議的結構格式。APDU數據有兩種結構,讀寫器使用的APDU結構為命令APDU,C-APDU(Command APDU),智能卡方面使用的APDU結構為響應APDU,R-APDU(Reponse APDU)。

命令APDU

必選部分:CLA, INS, P1, P2

可選部分:LC, 數據段, LE

CLA確定APDU的類別,INS確定要執行的指令,P1和P2是參數。

LC確定數據段的長度,數據段是發送到智能卡上的數據,LE確定讀寫器期待智能卡響應的字節數。

響應APDU

可選部分:數據段

必選部分:SW1, SW2

數據段的長度由命令APDU的LE確定。

SW1和SW2是狀態字。

卡側APDU編程實踐

JAVACARD有一系列APDU處理的方法可以調用,詳情可以查看相應的說明文檔。先簡單記錄下我在實踐過程中遇到的一些問題,及相應的答案。

在處理一個APDU命令前,首先要調用getBuffer命令取得APDU緩沖區數組的引用,通過該數組的引用,即可訪問APDU緩沖區數組的內容。

public voidprocess(APDU apdu) {byte[] buffer =apdu.getBuffer();switch(buffer[ISO7816.OFFSET_INS]) {

}

}

首先要注意兩點,第一:其中取得緩沖數組的引用給buffer時,注意buffer需在方法中定義,即定義為局部數組。第二:此時獲得的buffer數組中僅僅包含APDU的命令頭,即CLA, INS, P1, P2,P3,不包括后續的數據(即P3后的數據)。如需接受完整的APDU指令,需要利用

byte buffer[]=apdu.getBuffer();short bytesRead=apdu.setIncomingAndReceive();

注意apdu.setIncomingAndReceive()返回數據長度,為命令頭后面的數據長度,即LC的值。

總結

以上是生活随笔為你收集整理的Java智能卡 技术_java智能卡APDU学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。