CPU卡电子钱包圈存消费调试记录
參考規范:
 《復旦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卡电子钱包圈存消费调试记录的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Linux执行curl报错:Protoc
- 下一篇: ubuntu18 + QT + 动态库创
