参考规范:
《复旦FMCOS 》《PBOC2.0第2部分》

1.密钥装载
圈存密钥装载: 80D40102153FF0F2000200112233445566778899aabbccddeeff

02-密钥标识

3F-圈存密钥

F0F2-使用权限更改权限

0002-密钥版本算法标识

2.圈存
选择电子钱包: 00A4000002000200

发送圈存初始化: 805000020b020000200000112233445510

0002-P1P2-电子钱包

02-密钥标识

00002000-四字节交易金额

001122334455 -终端机编号

10- Le

1.00圈存密钥 3f 3f 3f3f 3f 3f 3f3f 3f 3f 3f3f3f 3f 3f3f

2.01圈存密钥00112233445566778899aabbccddeeff

3.02圈存密钥00112233445566778899aabbccddeeff

圈存初始化命令和返回数据:

=> 80 50 00 02 0B 02 00 00 20 00 00 11 22 33 44 55 10

<=00 00 00 00 00 00 00 02 39 48 bc 11 31 ba 0b cd 90 00

3DES加密算法-ECB

初始化向量:00 00 00 00 00 00 00 00

处理数据:39 48 bc 11 00 00 80 00

(4字节随机数+2字节联机交易序号+8000)

密钥:00112233445566778899aabbccddeeff

结果:3FF239BBDB26018A

MAC 加密算法-CBC(PBOC-MAC)

初始化向量:00 00 00 00 00 00 00 00

处理数据:00 00 00 00 00 00 20 00 02 00 11 22 33 44 55

(4字节原余额+4字节交易金额+1字节交易类型标识+6字节终端机编号)

密钥:3FF239BBDB26018A

结果:C47312E9

卡片返回结果:31 ba 0b cd

圈存密钥装载:

80 D4 01 00 15 3F F0 F2 01 03 3F 3F3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F

圈存初始化命令和返回数据:

805000020b000000200000112233445510

<=00 00 00 00 00 00 01 03 ee 75 37 42 00 00 00 00 90 00

算法标识为03,发圈存初始化命令卡片返回的MAC1是:00 00 00 00

以上结果都不对,经过验证定位应该是密钥装载有问题,从新装载密钥然后圈存

从新装载圈存密钥

80D40101153FF0F2010000112233445566778899aabbccddeeff

80D40102153FF0F2000000112233445566778899aabbccddeeff

80D40103153FF0F0010000112233445566778899aabbccddeeff

TAC密钥:

80D401001534F0F2010100112233445566778899aabbccddeeff

消费密钥:

80D40100153EF0F2000000112233445566778899aabbccddeeff

圈存初始化命令和返回数据:

=> 80 50 00 02 0B 02 00 00 20 00 00 11 22 33 44 55 10

<=00 00 00 00 00 00 00 00 e0 b8 47 48 ea 41 1f 90 90 00

过程密钥:7C45FBFB5B3A68F5

MAC1:EA411F90

计算过程:

3DES加密算法-ECB

初始化向量:00 00 00 00 00 00 00 00

处理数据:e0 b8 47 48 00 00 80 00

(4字节随机数+2字节联机交易序号+8000)

密钥:00112233445566778899aabbccddeeff

结果:7C45FBFB5B3A68F5

MAC 加密算法-CBC(PBOC-MAC)

初始化向量:    00 0000 00 00 00 00 00

处理数据:  00 00 00 00 00 00 20 00 02 00 11 22 33 44 55

(4字节原余额+4字节交易金额+1字节交易类型标识+6字节终端机编号)

密钥:        7C45FBFB5B3A68F5

结果:        EA411F90

卡片结果:  ea 41 1f90

验证结果正确,再次证明确实是圈存密钥装载的有问题,由于中途卡片拿开,再次做圈存初始化。

圈存命令中卡片计算MAC2使用的过程密钥是计算MAC1时产生的过程密钥,所以圈存初始化和圈存是一个连续的过程,中途卡片不能断电。

圈存初始化命令和返回数据:

=>80 50 00 02 0B 01 00 00 20 00 00 11 22 33 44 55 10

<= 00 00 00 00 00 00 01 00 c9 03 81 4d 03 97 6c 22 90 00

过程密钥:11FDF264E8AEEFA3

MAC1:03976C22

圈存命令和返回数据:

805200000B201612161058008AFA5718

<= fa 00 06 6d 90 00

MAC2计算:

MAC 加密算法-CBC(PBOC-MAC)

初始化向量:    00 0000 00 00 00 00 00

处理数据:  000020000200112233445520161216105800

(4字节交易金额+1字节交易标识+6字节终端机编号+7字节终端交易日期时间)

密钥:        11FDF264E8AEEFA3

结果:        8AFA5718

TAC计算:

MAC 加密算法-CBC(PBOC-MAC)

密钥:       8888888888888888

(内部密钥左右8字节异或)

处理数据:000020000000000020000200112233445520161216105800

(4字节新余额+2字节旧联机序号+4字节交易金额+1字节交易类型+6字节终端机编号+4字节终端交易日期+3字节终端交易时间)

结果:     FA 0006 6D

卡片:    FA 0006 6D

圈存成功,电子钱包余额更新成00002000

3.消费
消费初始化命令

805001020b0000000001001122334455

8050-CLA和INS

0102-P1和P2

00-密钥标识

00000001-交易金额

001122334455-终端机编号

消费初始化命令和返回数据

805001020b0000000001001122334455

<= 00 00 20 00 00 00 00 00 00 00 00 58 46 33 c9 90 00

MAC1计算:

3DES加密算法-ECB

初始化向量:00 00 00 00 00 00 00 00

处理数据:58 46 33 c9 00 00 0000

(4字节随机数+2字节脱机交易序号+交易序号最右两字节)

密钥:00112233445566778899aabbccddeeff

结果:C08346DF9F1D457A

MAC 加密算法-CBC(PBOC-MAC)

初始化向量:    00 0000 00 00 00 00 00

处理数据:  00 00 00 01 06 0011 22 33 44 55 20161216134600

(4字节交易金额+1字节交易类型标识+6字节终端机编号+4字节终端交易日期+3字节终端交易时间)

密钥:        C08346DF9F1D457A

结果:        D45737C5

消费命令:

805401000F0000000020161216134600D45737C508

8054-CLA和INS

0100-P1和P2

00000000-终端交易序号

20161216-终端交易日期

134600-终端交易时间

D45737C5-MAC1

消费命令和返回数据:

805401000F0000000020161216134600D45737C508

<= 8a f2 70 dc 66 b5 4a 6b 90 00

TAC计算:

MAC 加密算法-CBC(PBOC-MAC)

密钥:

8888888888888888

(内部密钥左右8字节异或)

处理数据:

00000001060011223344550000000020161216134600

(4字节交易余额+1字节交易类型标识+6字节终端机编号+4字节终端交易序号+4字节终端交易日期+3字节终端交易时间)

结果:    8AF270DC

卡片:    8a f270 dc

MAC2计算:

MAC 加密算法-CBC(PBOC-MAC)

初始化向量:    00 0000 00 00 00 00 00

处理数据:  00000001 (4字节交易金额)

密钥:      C08346DF9F1D457A

结果:        66B54A6B

卡片:        66b54a6b

4.总结
1.圈存初始化MAC1计算不正确原因是圈存密钥装载时算法标识不对

00-3DES

01-DES

03-255保留

2.过程密钥计算使用ECB模式3DES算法,MAC使用CBC模式des的MAC算法
3.一般消费或者圈存,CPU卡中装载的是分散过的密钥,SAM卡中装载的是未分散的密钥

4.本案例中未使用SAM卡,圈存消费密钥都未分散
---------------------

CPU卡电子钱包圈存消费调试记录相关推荐

  1. 公交行业CPU卡总结(发卡,消费,充值)

    公交行业CPU卡总结(发卡,消费,充值) 前言 CPU卡到底是个什么东西 CPU卡的一些基本知识 APDU命令 CPU卡的文件结构 CPU卡中的钱包类型及如何消费 电子钱包 电子现金 如何发卡(针对互 ...

  2. 中国金融集成电路(IC)卡电子钱包存折卡片规范

    CLA,INS,P1,P2含义 CLA----指令类型:除'FF'外可赋任何值. INS----指令类型的指令码.只有在低半字节为0,且高半字节既不是'6'也不是'9'时,INS才有效. P1 P2- ...

  3. 电子现金 圈存、补登

    电子现金业务 共有3个账户:传统账户,IC卡电子现金账户,补登账户. IC卡电子现金账户充值:是将传统账户的钱打入IC卡电子现金账户. 补登余额:是补登账户中余额,也就是可以存到IC卡电子现金账户中的 ...

  4. android钱包nfc功能,Android NFC(二)M1卡电子钱包功能

    M1任意可写块都可实现电子钱包的功能.本质其实就是按照一定的数据格式来对块值进行初始化.加值.减值.电子钱包的数据结构下图示例: 钱包结构.png 比如要将第5扇区的第0块作为电子钱包的存储位置,就要 ...

  5. 高速公路ETC卡签之我见3-卡片圈存

     本部分介绍用户卡圈存交易(通俗说法为卡片充值)的详细交易过程.通过圈存交易,持卡人可将资金划入到卡片的电子钱包中.这种交易要求提交个人识别码(PIN). 1.  圈存交易 1.1.交易流程 1. ...

  6. IC 卡、M1 卡、CPU 卡、SAM 卡、PSAM 卡的联系与区别

    一. 技术方面(非接触式 IC 卡) 1. 逻辑加密卡又叫存储卡,卡内的集成电路具有加密逻辑和 EEPROM (电可 擦除可编程只读存储器). 2. CPU 卡又叫智能卡, 卡内的集成电路包括中央处理 ...

  7. 非接触CPU卡与非接触IC卡的区别是什么?

    我们的一些制卡客户在非接触式CPU卡和非接触式IC卡的认识方面还有些不足,经常会问非接触CPU卡是不是非接触IC卡?其实他们都是智能卡,但是却有本质上的差别,下面就让我为大家普及一下这方面的制卡常识. ...

  8. 四个方面比较CPU卡加密系统与M1加密系统

    http://www.dzsc.com/data/html/2010-11-24/87326.html 密钥管理系统(Key Management System),也简称KMS,是IC项目安全的核心. ...

  9. CPU卡加密系统与M1加密系统比较!

    非接触CPU卡与逻辑加密卡 1.          逻辑加密存储卡:在非加密存储卡的基础上增加了加密逻辑电路,加密逻辑电路通过校验密码方式来保护卡内的数据对于外部访问是否开放,但只是低层次的安全保护, ...

最新文章

  1. zyUpload+struct2完成文件上传
  2. 「LibreOJ β Round #2」计算几何瞎暴力
  3. desk next the to_仁爱版七年级下册英语句型转换题型专练
  4. MyBatis-学习笔记05【05.使用Mybatis完成CRUD】
  5. js读取外部json指定字段值完整代码_前端工程化 剖析npm的包管理机制(完整版)...
  6. SpringBoot核心
  7. 【前端应该知道的那些事儿】运动学基础
  8. windbg远程调试方法
  9. 发送短信功能-联通接口
  10. nodeJS中利用第三方内置模块实现数字转大写功能
  11. html表单填写保存在哪里,网页表单保存在什么位置
  12. 国债(长短期)、财政赤字、利率、美元指数、国债收益率关系
  13. 第四届CCF计算机职业资格认证考试题解(C++)
  14. Linux查看mpp数据库地址,linux下打开.mpp文件(微软project)._操作系统_rainysia的专栏-CSDN博客...
  15. cnzz统计代码被谷歌浏览器拦截警告
  16. Ubuntu20与win10共享文件夹
  17. Hexo添加Live2D看板娘最新教程
  18. BERT in tweet_sentiment_extraction
  19. 04.声明式服务调用:Spring Cloud Feign(Greenwich.SR2)
  20. 《途客圈创业记:不疯魔,不成活》一一1.2 Alex和剑桥MBA

热门文章

  1. 彻底搞明白大B和小b之间的关系
  2. 读计算机专业选北大还是清华,选清华还是选北大?
  3. java 下载限速_Java 文件下载限流算法
  4. APP产品设计流程图
  5. python计数变量_python pandas总结名义变量(计数)
  6. 百度定位后,微信小程序位置不准,怎么办 腾讯/百度地图经纬度相互转换
  7. vive android模拟器,扒一扒,那些民间高手如何通过Vive追踪器打造模拟器?
  8. LTE名词解释(转)
  9. MATLAB中波浪线的作用
  10. java基础—分支结构