WRITE KEY 命令用于在密钥文件中增加或者修改密钥
代码 | 值 |
CLA | 80/84 |
INS | D4 |
P1 | 表示此条WRITE KEY命令用来添加密钥 |
表示此条WRITE KEY命令用来更新P1中指定类型的密钥 | |
P2 | 密钥标识 |
Lc | 见命令报文数据域 |
Data | |
Le | 不存在 |
命令报文数据域
注意:密钥类型 和密钥标识不是一回事请
增加 外部认证密钥举例:
在主目录下面建立密钥文件:
然后执行建密钥文件命令: 80 E0 00 00 07 3F 00 B0 01 F0 FF FF
说明:
80 E0 :指令类别和指令码; 创建文件或者目录
00 00 :文件标识;
07:长度; 07表示后面有7个字节
3F :文件类型,此为密钥 文件.
00 B0: 所建文件可用的空间,即可用 0XB0 个字节的空间;
01 :读权限; F0 :写权限.
—– 01表示没有读的权限
—– F0表示可以任意写
密钥文件建好后就要给其增加密钥了
执行指令: 80D4 0100 0D 39 F0F0 AA55 FFFFFFFFFFFFFFFF
说明:
80D4 :指令类别和指令码;
01 00 :文件标识;
0D:长度; 0D表示后面有13个字节
39 :文件类型,此为外部认证密钥
F0 :读权限; F0 :写权限 ;
AA:后续状态;
55 :错误计数,当前为 5次机会,
返回错 误代码是 63 CX, X就是次数了,当X为0时卡永久补锁,操作主控密钥时请注意!
增加 口令密钥举例:
建立 DF目录下密钥文件
执行指令: 80E0 0001 07 3F 01 8F 95 F0 FFFF
80 E0 :指令类别和指令码; 创建文件或者目录
00 01 :文件标识;
07:长度; 07表示后面有7个字节
3F :文件类型,此为密钥 文件.
01 8F: 所建文件可用的空间,即可用 0X018F 个字节的空间; 这个地方不对
95 :读权限; F0 :写权限.
—– 95表示
—– F0表示可以任意写
在 DF目录下密钥文件里增加口令密钥
执行指令: 80 D4 0101 08 3A F0 EF 44 55 12 34 56
说明:
80 D4 :指令类别和指令码;
0101 :文件标识;
08:长度;
3A:文件类型,即口令密钥
F0 :读权限;
EF :写权限 ;
44 :后续状态;
55 :错误计数;
123456 :3个字节的PIN 密码
智能卡 密码算法:
DES ECB(电子密本方式)其实非常简单,就是将数据按照8个字节一段进行DES加密或解密得到一段段的8个字节的密文或者明文,最后一段不足8个字节(一般补0或者F),按照需求补足8个字节进行计算(并行计算),之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响。
DES CBC(密文分组链接方式)有点麻烦,它的实现机制使加密的各段数据之间有了联系。