Java 如何创建APDU消息
我正在尝试使用基于主机的卡模拟来开发Android应用程序,但对APDU消息感到困惑 我一直在尝试下面的几个例子(2在底部),但仍然不知道如何格式化我自己的APDU消息。我正在开发HCE应用程序和reader应用程序,因此我认为这两个应用程序都需要完成 以零售店会员卡为例,需要在其上传输会员号,如何创建APDU消息Java 如何创建APDU消息,java,android,nfc,apdu,hce,Java,Android,Nfc,Apdu,Hce,我正在尝试使用基于主机的卡模拟来开发Android应用程序,但对APDU消息感到困惑 我一直在尝试下面的几个例子(2在底部),但仍然不知道如何格式化我自己的APDU消息。我正在开发HCE应用程序和reader应用程序,因此我认为这两个应用程序都需要完成 以零售店会员卡为例,需要在其上传输会员号,如何创建APDU消息 首先,APDU命令/响应对-只有二进制字节块,除了有时使用的加密之外,没有任何魔力 要了解APDU命令和响应,请查看规范: 第3部分:描述APDU命令和响应的内容和类 第4部分:
首先,APDU命令/响应对-只有二进制字节块,除了有时使用的加密之外,没有任何魔力 要了解APDU命令和响应,请查看规范:
- 第3部分:描述APDU命令和响应的内容和类
- 第4部分:(和其他几个部分)介绍了基本命令
您的零售商店卡可以使用ISO或卡制造商的标准APDU,也可以实现自己的(javacard)命令。不必查看零售卡规格或分析APDU跟踪,就很难说出命令的真正作用。只需使用APDU命令创建一个字符串,通过函数将其转换为字节数组并返回即可。没什么疯狂的 以下是要转到/来自字符串/字节[]的函数
public static String byteArrayToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X", b));
}
return sb.toString();
}
public static byte[] hexToByteArray(String hexString) {
int len = hexString.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
| Character.digit(hexString.charAt(i + 1), 16));
}
return data;
}
公共静态字符串byteArrayToHex(字节[]字节){
StringBuilder sb=新的StringBuilder();
for(字节b:字节){
sb.append(字符串格式(“%02X”,b));
}
使某人返回字符串();
}
公共静态字节[]hexToByteArray(字符串HextString){
int len=hexString.length();
字节[]数据=新字节[len/2];
对于(int i=0;i