CPU卡更新二进制文件信息时需要注意的点

流程与指令

1.取随机数

对象:用户卡(CPU卡)
指令:0084000004(取四字节伪随机数)
目的:取用户卡的四字节随机数,补位四字节“00”后,八字节作为MAC计算的初始化向量

2.DES计算初始化

对象:PSAM卡(初始化PSAM卡DES/MAC计算接口)
指令:80 1A+密钥类型+密钥版本+数据域长度+待加密数据(实质为分散因子)
目的:初始化PSAM卡的DES/MAC计算接口,并告诉PSAM卡,我的分散因子是什么,我要分散几级,方便后续的MAC计算

3.MAC(DES)计算

对象:PSAM卡(实际计算过程)
指令:80 FA+05 00(05含义为“唯一一块MAC计算”)+数据域长度+待加密数据(组成为8字节初始化向量+更新数据指令的全部,注意使用80规则补正为8字节的整数倍)
目的:实际计算出待加密数据的四字节MAC,供下一步调用

4.更新数据

对象:用户卡(CPU卡)
指令:04 D6+文件地址+偏移量(例:更新05文件,从第五字节开始更新,就是04 D6 85 05)+数据域长度+待更新数据
该指令返回成功后,更新二进制文件的数据即完成

MAC计算方面的坑

1.DES初始化那一步的分散因子和密钥类型特别容易取错,一定记得反复核对和从CPU卡里取出来的是否一样

2.MAC计算头四个是不变的,80 FA 05 00,后续长度记得加上8字节的初始化向量,以及04D6后的长度提前补上4字节MAC的长度

3.关于MAC计算后数据域的80补正:80 FA指令的全部数据域长度应该为8的整数倍。若不是,则在最后首位加上80,然后是00,00,00…,补正到8的整数倍为止;若一开始即为8的整数倍,则加上80,00,00…补正到下一个8的整数倍。此步骤可称为“fixed80”操作

4.最后二进制文件更新命令的“04 D6”代表带线路保护的更新,参数P2偏移量是十六进制Hex,不是十进制,当时被这个坑了好久,一直给我报“6700—长度不对”错误

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值