AID列表

AID-应用标识符的组成规则

AID:即唯一标识一个应用,分为两部分,RID(5字节)+PIX(最多11字节)

RID:注册标识符,由ISO组织来分配,标识一个全球唯一的应用提供商,一般是分配给卡组织。

PIX:扩展应用标识符,一般是由应用提供商自己定义。

 

AID
发卡行RID产品PIXAID
VisaA0 00 00 00 03Visa credit or debit10 10A0 00 00 00 03 10 10
Visa Electron20 10A0 00 00 00 03 20 10
Interlink30 10A0 00 00 00 03 30 10
V PAY20 20A0 00 00 00 03 20 20
Plus80 10A0 00 00 00 03 80 10
MasterCardA0 00 00 00 04MasterCard credit or debit10 10A0 00 00 00 04 10 10
MasterCard99 99A0 00 00 00 04 99 99
MasterCard(debit card)30 60A0 00 00 00 04 30 60
Cirrus(interbank network)60 00A0 00 00 00 04 60 00
UK Domestic MaestroA0 00 00 00 05Meastro UK00 01A0 00 00 00 05 00 01
Solo00 02A0 00 00 00 05 00 02
American ExpreeA0 00 00 00 25American Expree01A0 00 00 00 25 01
JCBA0 00 00 00 65Japan Credit Bureau10 10A0 00 00 00 65 10 10
PBOCA0 00 00 03 33PBOC借记应用01 01 01A0 00 00 03 33 01 01 01
PBOC贷记应用01 01 02A0 00 00 03 33 01 01 02
PBOC准贷记应用01 01 03A0 00 00 03 33 01 01 03
PBOC纯电子现金应用01 01 06A0 00 00 03 33 01 01 06
RuPay(India)A0 00 00 05 24RuPay10 10A0 00 00 05 24 10 10
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现门禁卡写入SE卡,需要用到NFC和SE API。以下是一个Android应用程序的完整代码实现。 首先,需要声明需要的权限和服务: ```xml <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" /> <uses-feature android:name="android.hardware.nfc" android:required="true"/> <uses-feature android:name="android.hardware.nfc.hce" android:required="true"/> <service android:name=".HostApduService" android:permission="android.permission.BIND_NFC_SERVICE"> <intent-filter> <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/apduservice"/> </service> ``` 在这个应用中,我们使用了HostApduService,一个可以在SE卡上运行的服务。在AndroidManifest.xml中声明了这个服务,并添加了相应的权限和意图过滤器。 接下来,创建`apduservice.xml`文件: ```xml <host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android" android:description="@string/service_description" android:requireDeviceUnlock="false"> <aid-group android:description="@string/aid_description" android:category="other"> <aid-filter android:name="F0010203040506" /> <aid-filter android:name="F0394148148100" /> </aid-group> </host-apdu-service> ``` 这个文件定义了应用可以处理的AID列表。在这个例子中,我们定义了两个AID:F0010203040506和F0394148148100。 接下来,创建一个HostApduService: ```java public class HostApduService extends android.nfc.cardemulation.HostApduService { private static final String TAG = "HostApduService"; private static final String SAMPLE_LOYALTY_CARD_AID = "F0010203040506"; private static final byte[] SELECT_OK_SW = HexStringToByteArray("9000"); private static final byte[] UNKNOWN_CMD_SW = HexStringToByteArray("0000"); private static final byte[] SELECT_APDU = BuildSelectApdu(SAMPLE_LOYALTY_CARD_AID); private static byte[] BuildSelectApdu(String aid) { return HexStringToByteArray("00A40400" + String.format("%02X", aid.length() / 2) + aid); } private static byte[] HexStringToByteArray(String s) { int len = s.length(); byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i+1), 16)); } return data; } @Override public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) { if (Arrays.equals(SELECT_APDU, commandApdu)) { Log.i(TAG, "Application selected"); return SELECT_OK_SW; } else { return UNKNOWN_CMD_SW; } } @Override public void onDeactivated(int reason) { Log.i(TAG, "Deactivated: " + reason); } } ``` 这个HostApduService的作用是在SE卡上运行,处理来自读卡器的APDU命令。在这个例子中,我们只处理SELECT APDU命令,忽略其他命令。 最后,启动应用程序并将门禁卡放在手机的NFC读卡器上。如果一切正常,应用程序应该能够检测到卡片,并将其写入SE卡中。 请注意,这个应用程序只是一个演示,实际的门禁系统需要更加复杂的逻辑和安全措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值