You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JCOP SDK转换CAP文件时遇“Invalid AID”错误求助

Java Card Converter 提示“Invalid AID”错误排查

问题情况

已经试过近100种不同的converter命令写法、更换不同AID、只使用小程序AID、移除版本号“1.0”等操作,但始终跳出“Invalid AID”错误。之前用其他Java版本结合XML生成过一次CAP文件,但文件大小接近400kB,明显异常。目前偏好且使用Java7环境。

使用的命令

./converter.sh \
  -classdir /Users/X/Desktop/javacard/emvcoapplet/bin \
  -d /Users/X/Desktop/javacard/emvcoapplet/cap \
  -exportpath /Users/X/Desktop/javacard/jc320v24.0_kit/lib/api_classic-3.0.5.jar \
  -applet A000000333010101 emvcoapplet.EMVCoApplet \
  emvcoapplet 1.0 A0000003330102

错误信息

Error Message:error: invalid AID A000000333010101.
Usage for compact CAP files:
    converter <options> package_name package_aid major_version.minor_version
    OR
    converter -config <filename>
    ...

小程序代码片段

package emvcoapplet;

import javacard.framework.*;
import javacard.security.*;
import javacardx.crypto.*;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;

import javacard.framework.*;
import javacard.security.*;
import javacardx.crypto.*;

public class EMVCoApplet extends Applet {

    private static final byte[] AID = { (byte) 0xA0, 0x00, 0x00, 0x03, 0x33, 0x01, 0x01, 0x01 };
    public static void install(byte[] bArray, short bOffset, byte bLength) {
        new EMVCoApplet().register(AID, (short) 0, (byte) AID.length);
    }

    private EMVCoApplet() {
        cipherAESCBC = Cipher.getInstance(Cipher.ALG_AES_BLOCK_128_CBC_NOPAD, false);
        initializePreStoredTLVStructure();
        initializeKeys();
        initializeOwnerPin();
    }

    public void process(APDU apdu) throws ISOException {
        byte[] buffer = apdu.getBuffer();
        byte cla = buffer[ISO7816.OFFSET_CLA];
        byte ins = buffer[ISO7816.OFFSET_INS];

        try {
            if (selectingApplet()) {
                return;
            }

            if (buffer[ISO7816.OFFSET_CLA] != CLA_EMV_APPLET) {
                ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
            }....
    }
}

项目结构

emvcoapplet
├── bin
│   └── emvcoapplet
│       ├── EMVCoApplet$TLV.class
│       └── EMVCoApplet.class
├── build.xml
├── cap
├── lib
└── src
    └── emvcoapplet
        └── EMVCoApplet.java

Java Card工具包结构

jc320v24.0_kit
├── bin
│   ├── capdump.bat
│   ├── capdump.sh
│   ├── capgen.bat
│   ├── capgen.sh
│   ├── converter.bat
│   ├── converter.sh
│   ├── exp2text.bat
│   ├── exp2text.sh
│   ├── verifycap.bat
│   ├── verifycap.sh
│   ├── verifyexp.bat
│   ├── verifyexp.sh
│   └── verifyrev.sh
├── legal
│   └── THIRDPARTYREADME.txt
└── lib
    ├── api_classic-3.0.4.jar
    ├── api_classic-3.0.5.jar
    ├── api_classic-3.1.0.jar
    ├── api_classic-3.2.0.jar
    ├── api_classic_annotations-3.0.4.jar
    ├── api_classic_annotations-3.0.5.jar
    ├── api_classic_annotations-3.1.0.jar
    ├── api_classic_annotations-3.2.0.jar
    ├── asm-9.4.jar
    ├── commons-cli-1.6.0.jar
    ├── commons-logging-1.3.0.jar
    ├── jctasks_tools.jar
    ├── json.jar
    ├── logging.properties
    └── tools.jar

排查方向

  1. 核对AID的命令行写法:命令里的AID是十六进制字符串,得确保长度在5-16字节(也就是10到32个十六进制字符)。你代码里的AID是8字节,符合要求,但仔细检查下命令里的A000000333010101有没有打错字符,比如多了或者少了一位?
  2. 工具包和Java7的适配:你用的是jc320v24.0_kit,搭配api_classic-3.0.5.jar,试试换成api_classic-3.0.4.jar看看会不会兼容Java7更好。有些新版本的API包可能对JDK版本要求更高,Java7跑不动也说不定。
  3. 命令参数别搞混顺序:converter的语法要求很严,-applet后面必须是<小程序AID> <完整类名>,然后最后三个参数是包名 版本号 包AID,你现在的命令顺序看着是对的,但再仔细核对一遍每个参数的位置,别把包AID和小程序AID搞反了。
  4. 解决CAP文件过大问题:400kB的CAP肯定不对,正常都是几KB到几十KB。检查下bin目录里有没有多余的class文件,或者exportpath是不是不小心指向了JDK的jar包,而不是Java Card的核心API包——要是把JDK的类都打包进去了,文件肯定超大。
  5. 换用配置文件试试:命令行参数多了容易错,写个配置文件converter.cfg,内容如下:
classdir=/Users/X/Desktop/javacard/emvcoapplet/bin
destdir=/Users/X/Desktop/javacard/emvcoapplet/cap
exportpath=/Users/X/Desktop/javacard/jc320v24.0_kit/lib/api_classic-3.0.5.jar
applet A000000333010101 emvcoapplet.EMVCoApplet
emvcoapplet 1.0 A0000003330102

然后执行./converter.sh -config converter.cfg,这样能避免命令行输入错误。

内容的提问来源于stack exchange,提问作者keepaerie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:25:19