edep 初始化圈存,圈存流程、数据计算与示例
来源:互联网 发布:excel2007统计重复数据 编辑:程序博客网 时间:2024/06/11 20:04
初始化圈存与圈存
涉及密钥
涉及DLK,DTK两个密钥
下面例子中
DLK为 70 6D 06 71 BB 8B D2 8B D3 D6 E8 83 68 32 FD D4
DTK为 47 9E 71 BE FF 10 7A 76 13 8D 34 F8 4B 20 31 FF
要执行圈存,必要的选文件,校验pin之类的是要先执行的。
//reset
3B 88 80 01 44 31 31 43 52 32 2E 30 70
//Select File (defined by ISO/IEC 7816-4)
00 A4 04 00 09 A0 00 00 00 03 86 98 07 02
6F 32 84 09 A0 00 00 00 03 86 98 07 02 A5 25 9F 08 01 02 9F 0C 1E 63 64 00 22 33 33 00 02 03 01 00 05 20 00 08 17 00 00 00 01 20 00 01 01 20 10 12 31 88 99
90 00
//Verify (defined by ISO/IEC 7816-4)
00 20 00 00 02 12 34
90 00
//Get Balance (defined by PBOC)
80 5C 00 01 04
00 00 00 24
90 00
//Get Balance (defined by PBOC)
80 5C 00 02 04
00 00 00 00
90 00
下面圈存0x10单位,一般这个单位是分
//8050 00 01 ( 01 00000010 112233445566 )//-----Final result --- 80 50 00 01 0B 01 00 00 00 10 11 22 33 44 55 66
//
//clear_fifo ( )
//--clear_fifo clear all fifo data
//
//-----Final result ---
//
//apdu ( 80 50 00 01 0B 01 00 00 00 10 11 22 33 44 55 66 )
//--send = 80 50 00 01 0B 01 00 00 00 10 11 22 33 44 55 66
//INITIALIZE FOR LOAD(圈存初始化) (defined by EDEP)
80 50 00 01 0B 01 00 00 00 10 11 22 33 44 55 66
00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81
90 00
//-----Final result ---
//
//read_fifo ( )
//--read_fifo get first data from fifo
//-- output = 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81
//
//-----Final result --- 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81
将计算结果进行分割
余额
//mid ( 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81 , int ( 0 ) , int ( 4 ) )//----int
//---- input = 00 hex = 00 00 00 00
//
//----int
//---- input = 04 hex = 00 00 00 04
//
//--mid returns a specified number data from input data
//-- input = 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81
//-- offset = 00 00 00 00
//-- length = 00 00 00 04
//-- output = 00 00 00 24
//
//-----Final result --- 00 00 00 24
序列号
//mid ( 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81 , int ( 4 ) , int ( 2 ) )//----int
//---- input = 04 hex = 00 00 00 04
//
//----int
//---- input = 02 hex = 00 00 00 02
//
//--mid returns a specified number data from input data
//-- input = 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81
//-- offset = 00 00 00 04
//-- length = 00 00 00 02
//-- output = 00 06
//
//-----Final result --- 00 06
伪随机数
//mid ( 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81 , int ( 8 ) , int ( 4 ) )//----int
//---- input = 08 hex = 00 00 00 08
//
//----int
//---- input = 04 hex = 00 00 00 04
//
//--mid returns a specified number data from input data
//-- input = 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81
//-- offset = 00 00 00 08
//-- length = 00 00 00 04
//-- output = C4 7D EB 1F
//
//-----Final result --- C4 7D EB 1F
MAC1
//mid ( 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81 , int ( 12 ) , int ( 4 ) )//----int
//---- input = 12 hex = 00 00 00 0C
//
//----int
//---- input = 04 hex = 00 00 00 04
//
//--mid returns a specified number data from input data
//-- input = 00 00 00 24 00 06 01 00 C4 7D EB 1F 54 B5 E4 81
//-- offset = 00 00 00 0C
//-- length = 00 00 00 04
//-- output = 54 B5 E4 81
//
//-----Final result --- 54 B5 E4 81
进行验证
计算过程密钥
//C4 7D EB 1F 00 06 8000//-----Final result --- C4 7D EB 1F 00 06 80 00
//
//3des_encode_ecb ( C4 7D EB 1F 00 06 80 00 , 70 6D 06 71 BB 8B D2 8B D3 D6 E8 83 68 32 FD D4 )
//--triple des ecb encrypt
//--key = 70 6D 06 71 BB 8B D2 8B D3 D6 E8 83 68 32 FD D4
//--plain = C4 7D EB 1F 00 06 80 00 cipher = 66 BF BA 7A E8 98 CC D8
//
//-----Final result --- 66 BF BA 7A E8 98 CC D8
计算MAC1
//fixed80 ( 00 00 00 24 00000010 01 112233445566 )
//--fixed80 fixed fill 80 00 ... after the data to multiple of 8
//-- input = 00 00 00 24 00 00 00 10 01 11 22 33 44 55 66
//-- output = 00 00 00 24 00 00 00 10 01 11 22 33 44 55 66 80
//
//-----Final result --- 00 00 00 24 00 00 00 10 01 11 22 33 44 55 66 80
//
//des_des_mac ( 0000000000000000 , 00 00 00 24 00 00 00 10 01 11 22 33 44 55 66 80 , 66 BF BA 7A E8 98 CC D8 )
//--des_des_mac
//--key = 66 BF BA 7A E8 98 CC D8
//--icv = 00 00 00 00 00 00 00 00 plain = 00 00 00 24 00 00 00 10
//--xor = 00 00 00 24 00 00 00 10 cipher = 68 2A 53 DB A2 0B C2 DA
//--icv = 68 2A 53 DB A2 0B C2 DA plain = 01 11 22 33 44 55 66 80
//--xor = 69 3B 71 E8 E6 5E A4 5A cipher = 54 B5 E4 81 EF E5 06 12
//
//-----Final result --- 54 B5 E4 81
计算圈存指令,主要就是计算MAC2
//fixed80 ( 00000010 01 112233445566 20140624111111 )//--fixed80 fixed fill 80 00 ... after the data to multiple of 8
//-- input = 00 00 00 10 01 11 22 33 44 55 66 20 14 06 24 11 11 11
//-- output = 00 00 00 10 01 11 22 33 44 55 66 20 14 06 24 11 11 11 80 00 00 00 00 00
//
//-----Final result --- 00 00 00 10 01 11 22 33 44 55 66 20 14 06 24 11 11 11 80 00 00 00 00 00
//
//des_des_mac ( 0000000000000000 , 00 00 00 10 01 11 22 33 44 55 66 20 14 06 24 11 11 11 80 00 00 00 00 00 , 66 BF BA 7A E8 98 CC D8 )
//--des_des_mac
//--key = 66 BF BA 7A E8 98 CC D8
//--icv = 00 00 00 00 00 00 00 00 plain = 00 00 00 10 01 11 22 33
//--xor = 00 00 00 10 01 11 22 33 cipher = D8 9C 25 41 43 FE C4 FA
//--icv = D8 9C 25 41 43 FE C4 FA plain = 44 55 66 20 14 06 24 11
//--xor = 9C C9 43 61 57 F8 E0 EB cipher = 8E CA D3 59 0F 6A B9 05
//--icv = 8E CA D3 59 0F 6A B9 05 plain = 11 11 80 00 00 00 00 00
//--xor = 9F DB 53 59 0F 6A B9 05 cipher = 50 D4 04 B0 B9 F7 7B D1
//
//-----Final result --- 50 D4 04 B0
//
//8052 00 00 ( 20140624111111 50 D4 04 B0 )
//-----Final result --- 80 52 00 00 0B 20 14 06 24 11 11 11 50 D4 04 B0
//
//clear_fifo ( )
//--clear_fifo clear all fifo data
//
//-----Final result ---
//
//apdu ( 80 52 00 00 0B 20 14 06 24 11 11 11 50 D4 04 B0 )
//--send = 80 52 00 00 0B 20 14 06 24 11 11 11 50 D4 04 B0
执行圈存指令
//CREDIT FOR LOAD(圈存) (defined by EDEP)80 52 00 00 0B 20 14 06 24 11 11 11 50 D4 04 B0
CF 77 7F 5F
90 00
//-----Final result ---
//
//read_fifo ( )
//--read_fifo get first data from fifo
//-- output = CF 77 7F 5F
//
//-----Final result --- CF 77 7F 5F
计算TAC
//fixed80 ( add ( 00 00 00 24 , 00000010 ) 00 06 00000010 01 112233445566 20140624111111 )//----add calculate num1 + num2
//---- num1 = 00 00 00 24
//---- num3 = 00 00 00 10
//---- result = 00 00 00 34
//
//--fixed80 fixed fill 80 00 ... after the data to multiple of 8
//-- input = 00 00 00 34 00 06 00 00 00 10 01 11 22 33 44 55 66 20 14 06 24 11 11 11
//-- output = 00 00 00 34 00 06 00 00 00 10 01 11 22 33 44 55 66 20 14 06 24 11 11 11 80 00 00 00 00 00 00 00
//
//-----Final result --- 00 00 00 34 00 06 00 00 00 10 01 11 22 33 44 55 66 20 14 06 24 11 11 11 80 00 00 00 00 00 00 00
//
//xor ( left ( 47 9E 71 BE FF 10 7A 76 13 8D 34 F8 4B 20 31 FF , 08 ) , right ( 47 9E 71 BE FF 10 7A 76 13 8D 34 F8 4B 20 31 FF , 08 ) )
//----left returns a specified number data from input data left side
//---- input = 47 9E 71 BE FF 10 7A 76 13 8D 34 F8 4B 20 31 FF
//---- length = 08
//---- output = 47 9E 71 BE FF 10 7A 76
//
//----right returns a specified number data from input data right side
//---- input = 47 9E 71 BE FF 10 7A 76 13 8D 34 F8 4B 20 31 FF
//---- length = 08
//---- output = 13 8D 34 F8 4B 20 31 FF
//
//--xor_whole XOR data 1 to data 2, the returned data length is the length of the data 2
//-- data 1 = 47 9E 71 BE FF 10 7A 76
//-- data 2 = 13 8D 34 F8 4B 20 31 FF
//-- result = 54 13 45 46 B4 30 4B 89
//
//-----Final result --- 54 13 45 46 B4 30 4B 89
//
//des_des_mac ( 0000000000000000 , 00 00 00 34 00 06 00 00 00 10 01 11 22 33 44 55 66 20 14 06 24 11 11 11 80 00 00 00 00 00 00 00 , 54 13 45 46 B4 30 4B 89 )
//--des_des_mac
//--key = 54 13 45 46 B4 30 4B 89
//--icv = 00 00 00 00 00 00 00 00 plain = 00 00 00 34 00 06 00 00
//--xor = 00 00 00 34 00 06 00 00 cipher = 5C 66 5D F5 06 9E 92 D2
//--icv = 5C 66 5D F5 06 9E 92 D2 plain = 00 10 01 11 22 33 44 55
//--xor = 5C 76 5C E4 24 AD D6 87 cipher = 6A 53 15 2F 0B BB D3 DC
//--icv = 6A 53 15 2F 0B BB D3 DC plain = 66 20 14 06 24 11 11 11
//--xor = 0C 73 01 29 2F AA C2 CD cipher = E8 CD E0 11 56 28 2C 9F
//--icv = E8 CD E0 11 56 28 2C 9F plain = 80 00 00 00 00 00 00 00
//--xor = 68 CD E0 11 56 28 2C 9F cipher = CF 77 7F 5F FC 78 51 FF
//
//-----Final result --- CF 77 7F 5F
//
0 0
- edep 初始化圈存,圈存流程、数据计算与示例
- taoism 2 edep 圈存辅助计算 ui script
- 圈存&圈提
- 圈存&圈提
- 正确理解圈存
- ETC-圈存
- 圈存和圈提是什么意思
- 电子存折中的圈存指令
- 0.1.2.8版ep圈存脚本
- 电子现金圈存(转)
- 电子现金 圈存、补登
- PBOC/EMV之圈存模式的变革
- 基于pboc的电子钱包的圈存过程
- PBOC/EMV之圈存模式的变革
- 基于PBOC的电子钱包的圈存过程
- 高速公路ETC卡签之我见3-卡片圈存
- CPU卡电子钱包圈存消费调试记录
- PBOC/EMV之圈存模式的变革
- Netty In Action 读书笔记 - 第一章 Netty和Java NIO API
- 关于android service有可能被系统杀死的问题。
- 修改注册表QSettings
- 在Eclipse/MyEclipse中安装spket插件
- codeblocks 设置vs2010编译器
- edep 初始化圈存,圈存流程、数据计算与示例
- Mathematica 入门笔记
- 优游平台总代怎么申请总代【总代Q941494533】疽
- c sharp 异步编程
- 程序员的自我修养(1)——操作系统篇
- timestamp[] postgresql
- U-Boot 的编译
- 科锐C++视频教程
- shell中的cat和文件分界符(<<EOF)