CPU卡APDU命令错误码以及含义

直接上java代码

java 复制代码
public enum FMCOSStatus {
    SUCCESS("9000", "正确执行"),
    WARNING_POSSIBLE_DATA_ERROR("6281", "回送的数据可能错误"),
    SELECT_FILE_OR_KEY_CHECK_ERROR("6283", "选择文件无效,文件或密钥校验错误"),
    RETRY_COUNT_AVAILABLE("63CX", "X表示还可再试次数"),
    STATE_FLAG_UNCHANGED("6400", "状态标志未改变"),
    EEPROM_WRITE_FAILED("6581", "写EEPROM不成功"),
    INCORRECT_LENGTH("6700", "错误的长度"),
    CLA_MISMATCH_LINE_PROTECT("6900", "CLA与线路保护要求不匹配"),
    INVALID_STATE("6901", "无效的状态"),
    COMMAND_INCOMPATIBLE_WITH_FILE_STRUCTURE("6981", "命令与文件结构不相容"),
    SECURITY_STATUS_NOT_SATISFIED("6982", "不满足安全状态"),
    KEY_LOCKED("6983", "密钥被锁死"),
    CONDITIONS_OF_USE_NOT_SATISFIED("6985", "使用条件不满足"),
    SECURITY_MESSAGE_MISSING("6987", "无安全报文"),
    SECURITY_MESSAGE_DATA_INCORRECT("6988", "安全报文数据项不正确"),
    DATA_FIELD_PARAM_ERROR("6A80", "数据域参数错误"),
    FUNCTION_NOT_SUPPORTED("6A81", "功能不支持或卡中无MF或卡片已锁定"),
    FILE_NOT_FOUND("6A82", "文件未找到"),
    RECORD_NOT_FOUND("6A83", "记录未找到"),
    INSUFFICIENT_FILE_SPACE("6A84", "文件无足够空间"),
    PARAM_P1_P2_ERROR("6A86", "参数P1 P2错误"),
    KEY_NOT_FOUND("6A88", "密钥未找到"),
    FILE_END_BEFORE_LE("6B00", "在达到Le/Le字节之前文件结束,偏移量错误"),
    LE_ERROR("6CXX", "Le错误"),
    INVALID_CLA("6E00", "无效的CLA"),
    DATA_INVALID("6F00", "数据无效"),
    MAC_ERROR("9302", "MAC错误"),
    APPLICATION_LOCKED("9303", "应用已被锁定"),
    AMOUNT_INSUFFICIENT("9401", "金额不足"),
    KEY_INDEX_NOT_SUPPORTED("9403", "密钥索引不支持"),
    REQUIRED_MAC_UNAVAILABLE("9406", "所需的MAC不可用"),
    GMAC_ERROR("9302", "GMAC错误"),
    INSTRUCTION_CODE_NOT_SUPPORTED("6D00", "指令代码(INS)不被支持或无效");

    private final String code;
    private final String description;

    FMCOSStatus(String code, String description) {
        this.code = code;
        this.description = description;
    }

    public String getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    public static FMCOSStatus fromCode(String code) {
        for (FMCOSStatus status : values()) {
            if (status.code.equals(code)) {
                return status;
            }
        }
        return null;
    }
}

使用示例:

java 复制代码
public class FMCOSExample {
    public static void main(String[] args) {
        String response = "6982";
        FMCOSStatus status = FMCOSStatus.fromCode(response);
        if (status != null) {
            System.out.println("状态码: " + status.getCode());
            System.out.println("含义: " + status.getDescription());
        } else {
            System.out.println("未知状态码: " + response);
        }
    }
}
相关推荐
津津有味道2 天前
WEB浏览器网页读写Desfire EV1 EV2 EV3卡,修改DES、3DES、AES密钥JS源码JavaScript
前端·javascript·nfc·desfire·ev2·ev3·ev1
津津有味道24 天前
Python写入URI网址到Ntag 424 DNA标签配置开启动态UID计数器镜像
linux·python·nfc·动态uid·424·cma加密数据
brave and determined1 个月前
传感器学习(day15):无人超市:从技术狂欢到理性回归,RFID的发展
单片机·嵌入式硬件·rfid·数字电路·nfc·嵌入式设计·近场通讯
wotaifuzao1 个月前
硬核拆解:从 RFID 到 NFC,一文读懂智能卡底层技术 (突出“硬核”和“全覆盖”)
物联网·信息与通信·rfid·nfc·感应卡
津津有味道2 个月前
读取NFC标签内的网址并打开网页
网址·浏览器·url·nfc·读卡器
摘星编程3 个月前
【案例实战】HarmonyOS SDK新体验:利用近场能力打造无缝的跨设备文件传输功能
华为·harmonyos·harmonyos next·nfc
Coodor5 个月前
碰一下可打开小程序,在web系统中如何嵌入将小程序写入NFC
前端·小程序·nfc
津津有味道7 个月前
Qt C++串口SerialPort通讯发送指令读写NFC M1卡
linux·c++·qt·串口通信·serial·m1·nfc
津津有味道8 个月前
VB.net复制Ntag213卡写入UID
.net·nfc·ntag213·写uid