1/7
深圳市汽车充电桩项目指令流
V1.0.0.2
1、充值(用户卡、充值卡) 卡端 用户卡 用户卡 ESAM 用户卡 4012000000 00B0810008 00A40000023F01 00B0910002 0084000008 0088000108+rand 4012000000 80FA000108+cardno 80FA000008+rand 单片机比较des1和des2,完成内部认证 00B0960006 00200000021234 E0CA00001E 指令 复位 取得用户卡号cardno 选择应用目录 读出电卡类型,01为用户卡,61为充值卡 取8字节随机数rand 加密随机数得des1 复位 内部认证密钥初始化 加密随机数得des2 取得表号eterm 校验pin 取钱包状态信息反馈数据第一字节为‘00’,流程继续 灰锁初始化,反馈:余额(4)remain+脱机交易序号(2)tserial+5字节+伪随机数(4)hrand 计算MAC1,反馈:4字节终端随机数trand+4字节mac1 灰锁,反馈:4字节GTAC+4字节mac2 说明 E07A080108 +02+eterm+09+0F ESAM E040000018+hrand+tserial+91+date+time+0101+cardno 用户卡 ESAM E07C080013+00000000+trand+date+time+mac1+08 E04200001B+hrand+tserial+trand+remain+cardno+01+mac2 校验mac2 Mac2校验成功,供电
2、解扣(用户卡、充值卡) 卡端 用户卡
指令 4012000000 00B0810008 复位 说明 取得用户卡号cardno 1
2/7 用户卡 ESAM 用户卡 ESAM 用户卡 用户卡 00A40000023F01 0084000008 0088000108+rand 4012000000 80FA000108+cardno 80FA000008+rand 单片机比较des1和des2,完成内部认证 00B0960006 0084000008 80FA000508 + cardno 80FA000008 + rand1 0082000508 + des 00200000021234 E0CA00001E 选择应用目录 取8字节随机数rand 加密随机数得des1 复位 内部认证密钥初始化 加密随机数得des2 取得表号eterm 取8字节随机数rand1 返写外部认证密钥初始化 得到des 返写外部认证 校验pin 取钱包状态信息反馈数据第一字节为‘01’流程继续 取终端随机数得trand 解扣初始化,反馈:余额(4)remain+脱机交易序号(2)tserial+联机交易序号(2)serial+密钥版本号(1)+算法标识(1)+伪随机数(4)jrand+mac1(4) 校验MAC1,反馈:4字节mac2+4字节mac0 解扣,反馈:mac3 得到新余额,反馈:3字节+4字节left 校验mac3 锁值位 从第一个记录开始读取返写信息文件2
E07F000004 E07A090107 +01+eterm+12 ESAM E04800002A+01+jrand+serial+remain+tserial+95+money +date+time+09+trand+cardno+mac1+08 E07E090013+money+date+time+mac2+mac0+04 无论成功与否电表均断电 E0CA00001E E04A000025+jrand+serial+left+tserial+money+95 +date+time+cardno+01+mac3 Mac3校验成功 E0CA010000 00B2011418 00B2021418 用户卡 ESAM 用户卡
3/7 00B2031418 。。。。。。。。。。。 00B20A1418 的各个记录,直到该记录为空,则往该记录中写入返写信息。如果0A个记录全部写满,则又从01记录开始写返写信息 根据上一步的判断,决定返写信息写入那个记录中。 交易开始时间和交易前金额为灰锁初始化中的数据;交易结束时间、交易后余额、用电量为解扣操作中的数据 00DC011418 + 返写数据 00DC021418 + 返写数据 00DC031418 + 返写数据 。。。。。。。。。。。。。。。。。。。。。。 00DC0A1418 + 返写数据 3、员工卡 卡端 员工卡 4012000000 00B0810008 指令 复位 取得卡号cardno,判断此员工卡在本充电桩是否可用 选择应用目录 读出电卡类型,判断此卡是否为员工卡 取8字节随机数rand 加密随机数得des1 复位 内部认证密钥初始化 加密随机数得des2 开始充电(断电) 说明 ESAM 00A40000023F01 00B0910002 0084000008 0088000008+rand 4012000000 80FA000108+cardno 80FA000008+rand 上位机器比较des1和des2,完成内部认证 如果要结束充电,执行相同流程即可 4、密钥修改 卡端 密钥卡
指令 4012000000 00B0810008 00A40000023F01 0084000008 复位 说明 取得卡号cardno 选择应用目录 取8字节随机数rand 3
4/7 ESAM 密钥卡 ESAM 密钥卡 0088000008+rand 4012000000 80FA000108+cardno 80FA000008+rand 上位机器比较des1和des2,完成内部认证 00B0960006 0084000008 0088000108+wrand 0082000008+des 00B081007B 00B0817BC2 加密随机数得des1 复位 内部认证密钥初始化 加密随机数得des2 取得表号eterm 取8字节随机数wrand 加密随机数得des 外部认证打开ESAM密钥修改权限 得到密钥更新文件数据str1 得到密钥更新数据文件str2 Str1+str2=str 为密钥更新文件数据,确定起始为“6802”, 长度为2字节,结束为“16”,并对校验和进行校验。通过后,获取各密钥的密文数据,依次为key[1]……key[13] 84d4350118+key[2] 84d4390218+key[3] 84d4390318+key[4] 84d4350418+key[5] 84d4310118+key[6] 84d43E0218+key[7] 84d4320118+key[8] 84d4360618+key[9] 84d4330920+key[10]+0000+eterm 84d4350518+key[11] 84d4350A18+key[12] 84d4360B18+key[13] 84d4390018+key[1]) 依次完成各密钥的更新,指令次序不要紊乱 ESAM 5、参数设置卡交互指令流 卡端 卡 指令 0012000000 00B0810008 00A40000023F01 00B0810002 说明 复位 取得卡号cardno 选择应用目录 读指令信息文件,根据第二个字节判断卡类型。如是”21”则为4
5/7 参数设置卡 ESAM 卡 ESAM 卡 0084000008 0088000108+rand 0012000000 80FA000108+cardno 80FA000008+rand 上位机器比较des1和des2,完成内部认证 00B0960006 0084000008 0088000208+wrand 0082000208+des 00B08100XX 取8字节随机数rand 加密随机数得到des1 复位 内部认证密钥初始化 加密随机数得到des2 取得表号eterm 取8字节随机数wrand 加密随机数得到des 外部认证打开参数设置权限 读取指令信息文件报警功率、限定功率、报警金额等,组织成一个字符串str1,XX为要读的数据长度 写ESAM参数信息文件,XX为要写入ESAM的数据长度 ESAM 00D68300XX+str1 流程结束 6、出厂设置卡交互指令流 卡端 卡 指令 0012000000 00B0810008 00A40000023F01 00B0810002 说明 复位 取得卡号cardno 选择应用目录 读指令信息文件,根据第二个字节判断卡类型。如是”41”则为参数设置卡 取8字节随机数rand 加密随机数得到des1 复位 内部认证密钥初始化 加密随机数得到des2 取得表号eterm 5
ESAM
0084000008 0088000108+rand 0012000000 80FA000108+cardno 80FA000008+rand 上位机器比较des1和des2,完成内部认证 00B0960006