为 DESFire 创建值文件时出现“67 00”错误

I got '67 00' error when I create value file for DESFire

我正在使用 DESFire 卡片,现在我想在我的应用程序中创建一个 值文件(应用程序的 ID 00 00 01).

我成功选择了具有给定 ID 的应用程序,然后将创建值文件的命令发送到 isodep.transceive 方法。

我的命令在这里:

byte[] cmdCreateValueFile = new byte[]{
        //cmd
        (byte)0xCC,
        //file no
        (byte)0x01, 
        //com.sett.
        (byte)0x00 ,
        //access rights
        (byte)0x44 , (byte)0x44,
        //lower limit
        (byte)0x00 ,(byte)0x00 ,(byte)0x00 ,(byte)0x00 ,
        //upper limit
        (byte)0x00 ,(byte)0x0F ,(byte)0x42 ,(byte)0x40 ,
        //initial value
        (byte)0x00 ,(byte)0x00 ,(byte)0x00 ,(byte)0x00 ,
        //limited credit enabled
        (byte)0x00
};

我的 DESFire 应用程序有 6 个密钥,我想使用密钥 #4 进行 READ、WRITE、READ & WRITE 和更改访问权限.

我希望收到状态码91 00,这意味着文件创建成功,但响应是67 00,这意味着长度错误。

您正在混合使用 ISO 命令 (CLA INS P1 P2 LC DATA...) 和本机命令 (INS DATA)。您之前的命令是 ISO 命令,这就是为什么您的卡要求所有命令都是 ISO 命令的原因。