CN101799954A - 一种对双电子钱包进行圈存的方法 - Google Patents

一种对双电子钱包进行圈存的方法 Download PDF

Info

Publication number
CN101799954A
CN101799954A CN200910237875A CN200910237875A CN101799954A CN 101799954 A CN101799954 A CN 101799954A CN 200910237875 A CN200910237875 A CN 200910237875A CN 200910237875 A CN200910237875 A CN 200910237875A CN 101799954 A CN101799954 A CN 101799954A
Authority
CN
China
Prior art keywords
stored value
card
value card
cpu
remaining sum
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200910237875A
Other languages
English (en)
Other versions
CN101799954B (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Feitian Technologies Co Ltd
Original Assignee
Beijing Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Feitian Technologies Co Ltd filed Critical Beijing Feitian Technologies Co Ltd
Priority to CN2009102378752A priority Critical patent/CN101799954B/zh
Publication of CN101799954A publication Critical patent/CN101799954A/zh
Priority to PCT/CN2010/076701 priority patent/WO2011060662A1/zh
Priority to US12/989,764 priority patent/US9378498B2/en
Application granted granted Critical
Publication of CN101799954B publication Critical patent/CN101799954B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种对双电子钱包进行圈存的方法,涉及信息安全领域。所述方法包括:CPU卡进入终端的非接触式感应区,上电并初始化,并对第一电子钱包和第二电子钱包进行同步,接收终端发送的所述圈存初始化命令,进行圈存初始化操作,并返回圈存初始化命令的响应报文给终端;终端接收圈存初始化命令的响应报文,并将圈存初始化命令的响应报文中的数据发送给主机;主机接收并保存数据,向终端发送圈存交易接受报文;终端接收所述圈存交易接受报文,并向CPU卡发送圈存命令;CPU卡接收圈存命令,对所述第二电子钱包进行圈存操作,同时更新所述第一电子钱包的余额,然后返回所述圈存命令的响应报文给终端。

Description

一种对双电子钱包进行圈存的方法
技术领域
本发明涉及信息安全领域,特别涉及一种在CPU终端对双电子钱包进行圈存的方法。
背景技术
逻辑加密卡Mifare 1(M1)技术成熟、价格低廉,在传统的城市交通智能卡应用中占据了绝大部分,但M1卡内部没有独立的CPU和操作系统,完全依靠内置硬件逻辑电路实现安全认证和保护,因此导致M1卡容易被破解,按交通智能卡“一卡多用、多卡互通”的发展趋势,M1卡内电子钱包的资金存量必将越来越高,因此M1的安全隐患已引起高度的关注。
CPU卡内具有中央处理器(CPU)、随机存储器(RAM)、程序存储器(ROM)、数据存储器(EEPROM)以及片内操作系统,其安全性大幅优于M1卡,但高昂的价格严重制约了其推广应用,近来随着非接触CPU卡的推出,其价格接近M1卡,技术也日趋成熟,这使全面推广应用CPU卡取代M1卡成为可能。
现在技术中存在一种包含M1和CPU两部分的CPU卡,但是使用这种CPU卡在M1终端进行充值时存在着较大的风险,同时使用这种CPU卡也无法在现有的M1终端进行消费,这样给用户造成了极大的不便,并且这种CPU卡在内部处理流程上两部分是完全独立的,没有同步机制来对这两部分进行同步。
发明内容
为了解决现有技术中的不足,本发明提供了一种在CPU终端对双电子钱包进行圈存的方法,所述方法包括:
CPU卡进入终端的非接触式感应区,所述终端与所述CPU卡按照ISO 14443接口协议建立连接;
所述CPU卡上电并初始化,对所述第一电子钱包和第二电子钱包进行同步,并等待接收所述终端发送命令;
所述终端向所述CPU卡发送圈存初始化命令;
所述CPU卡接收所述圈存初始化命令,进行圈存初始化操作,并返回所述圈存初始化命令的响应报文给所述终端;
所述终端接收所述圈存初始化命令的响应报文,并将所述圈存初始化命令的响应报文中的数据发送给主机;
所述主机接收并保存所述数据,向所述终端发送圈存交易接受报文;
所述终端接收所述圈存交易接受报文,并向所述CPU卡发送圈存命令;
所述CPU卡接收所述圈存命令,对所述第二电子钱包进行圈存,更新所述第一电子钱包的余额,并返回所述圈存命令的响应报文给所述终端;
所述终端接收所述圈存命令的响应报文,圈存交易结束。
本发明的有益效果在于:本发明提供的一种在CPU终端对双电子钱包进行圈存的方法,该方法中采用了CPU终端来进行圈存,这样就提高了原有的通过M1终端进行充值的安全性,并且本发明提供的CPU卡在不改变M1消费终端的前提下,仍然可以在原有的M1终端使用该CPU卡中的双电子钱包进行消费,这样给用户提供了极大的方便,本发明还提供了对CPU卡内的双电子钱包进行同步的方法,保证了CPU卡内的双电子钱包的余额的一致。
附图说明
图1为本实施例提供的一种双CPU卡的M1和CPU部分分别进行个人化的方法流程图;
图2为本实施例提供的一种对CPU卡内的CPU电子钱包和M1电子钱包进行同步的方法流程图;
图3为本实施例提供的一种在CPU终端对CPU卡内的CPU电子钱包和M1电子钱包同时进行圈存的方法流程图;
图4为本实施例提供的一种在CPU终端使用CPU卡内的CPU电子钱包和M1电子钱包进行消费的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步地详细描述。
本发明使用了一种双界面CPU卡,该双界面CPU卡具体为带有ISO 14443接口和Mifare 1的非接触式CPU卡,如SLE66CL80PEM、P5CD012等,并且通过该非接触式CPU卡,本发明实现了双电子钱包应用,具体地,使用该非接触式CPU卡中的ISO 14443接口实现的是符合银行标准(如PBOC2.0标准)的电子钱包,即CPU电子钱包,而使用该非接触式CPU卡中的Mifare 1实现的是基于逻辑加密芯片标准(Mifare标准)的金融应用,即M1电子钱包,两种钱包在硬件上相互独立,但CPU电子钱包应用可以访问M1电子钱包。在本发明中,带有双电子钱包的CPU卡为非接触式CPU卡,CPU终端为非接触式终端。
实施例1
本实施例提供了一种对CPU卡内的M1和CPU部分分别进行个人化的方法,其中可以先对CPU卡内的M1部分进行个人化,再对CPU部分进行个人化,也可以先对CPU卡内的CPU部分进行个人化,再对M1部分进行个人化,本实施例以先对M1部分进行个人化,再对CPU部分进行个人化为例来进行说明,具体实现步骤如下:
步骤101:在初始密码A和初始密码B的控制下设置M1中各扇区的新的密码A和密码B,同时设置各扇区中各数据块的访问条件;
在本实施例中,M1中共有16个扇区,即需要在这16个扇区中分别设置新的密码A和密码B,并且,各个扇区分别有4个块,其中前3个为数据块,最后一个为控制块,每个块均为16字节,数据块用于存储数据,控制块包含了所在扇区的密码A和密码B,以及各数据块的访问条件,其中密码A和密码B分别为6个字节,访问条件为4个字节。
步骤102:在需要进行初始化的数据块所在的扇区的密码A或密码B的控制下对该数据块写入初始值;
在本实施例步骤102中,预先约定M1电子钱包的余额存储在扇区1块0中,则对扇区1块0进行初始化时,则在扇区1的密码A或密码B的控制下对块0写入M1电子钱包的初始值,即对块0写入00000000FFFFFFFF0000000004FB04FB,其中,前4个字节的00000000为写入的M1电子钱包的初始值,接下来的4个字节的FFFFFFFF为M1电子钱包的初始值的反,再接下来的4个字节00000000为M1电子钱包的初始值,最后的4个字节04FB04FB为M1电子钱包的余额所在的数据块的块号、块号的反、块号和块号的反。
在本实施例中,步骤101和步骤102具体说明了对M1部分进行初始化的过程,下面具体描述对CPU部分进行初始化的过程:
步骤103:从CPU卡内获取传输密钥,并在传输密钥的控制下创建文件系统的主目录MF;
步骤104:创建MF下的密钥(KEY)文件;
步骤105:在传输密钥的控制下添加MF下的主控密钥;
步骤106:在MF的主控密钥的控制下添加MF下的维护密钥、全局PIN、全局PIN的解锁密钥、全局PIN的重装密钥等其它密钥;
步骤107:创建应用目录文件(DIR)、PBOC应用文件(ADF)以及ADF下的密钥(KEY)文件;
步骤108:在MF的主控密钥的控制下添加ADF的主控密钥;
步骤109:在ADF的主控密钥的控制下添加ADF下维护密钥、应用PIN、应用PIN的解锁密钥、应用PIN的重装密钥、消费取现密钥、圈存密钥、圈提密钥、交易验证(TAC)密钥、修改透支限额密钥、外部认证密钥和内部认证密钥等其它密钥;
步骤110:利用M1电子钱包所在扇区的密码A和密码B来计算M1电子钱包所在扇区的8字节的扇区访问密钥MF_password;
在本实施例步骤110中,计算M1电子钱包所在扇区的8字节的扇区访问密钥MF_password的方法,具体为:对M1电子钱包所在扇区的密钥A和密码B进行哈希运算,得到16字节,再将得到的16字节作为3DES算法的密钥,然后用3DES算法对8字节的初始值0000000000000000进行加密,结果即是M1电子钱包所在扇区的8字节的扇区访问密钥;
具体地,M1电子钱包所在扇区的扇区1的输入的密钥A和密码B分别为:A0A1A2A3A4A5和B0B1B2B3B4B5,对密钥A和密码B进行哈希运算,得到的结果为:40424446484A7E00007E60626466686A,将得到的结果作为3DES算法的密钥,用3DES算法对初始值0000000000000000进行加密,得到的结果为:8C7F46D76CE01266,即得到的扇区访问密钥为:8C7F46D76CE01266。
步骤111:在ADF的主控密钥的控制下添加M1电子钱包所在扇区的扇区访问密钥MF_password;
在本实施例中,还可以将M1电子钱包所在扇区的扇区访问密钥MF_password写入CPU卡内的CPU部分存储区中的特定位置。
步骤112:创建ADF下的公共应用基本文件(SFI=0x15),写入初始信息;
步骤113:创建ADF下的持卡人基本文件(SFI=0x16),写入初始信息;
步骤114:创建ADF下的交易明细文件(SFI=0x18);
步骤115:创建ADF下的自定义的交易工作文件,写入初始值;
在本实施例步骤115中,具体在自定义的交易工作文件中写入CPU电子钱包的余额的初始值00000000。
步骤116:在MF的属性区内设置一个个人化标志位,再将该个人化标志位设置为0xAA,表示CPU卡已进行了个人化操作。
在本实施例中,还可以创建一个文件,在该文件内设置一个个人化标志位,再将该个人化标志位设置为0xAA,表示CPU卡已进行了个人化操作;
或者,
还可以将CPU卡内的CPU部分存储区中的特定位置作为个人化标志位,并将该个人化标志位设置为0xAA,表示CPU卡已进行了个人化操作;
其中,0xAA是自定义的,也可以将0x01作为CPU卡已进行了个人化操作的标志,即步骤116还可以为:将个人化标志位设置为0x01;
或者,在本实施例步骤116还可以替换为:在MF下创建一个标识文件,表示CPU卡已进行了个人化操作。
本发明实施例提供了一种对CPU卡内的M1和CPU部分分别进行个人化的方法,在本实施例中将M1电子钱包所在扇区的扇区访问密钥写入CPU部分中,这样CPU电子钱包应用可以访问M1电子钱包,可以读取并修改M1电子钱包的余额。
实施例2
本实施例提供了一种对CPU卡内的CPU电子钱包和M1电子钱包进行同步的方法,CPU卡每次上电时,都会对CPU电子钱包和M1电子钱包进行同步处理,防止利用M1终端进行非法充值,例如当用户利用M1终端对CPU卡内的M1电子钱包进行充值后,则下次CPU卡上电时会对CPU电子钱包和M1电子钱包进行同步,即比较CPU电子钱包和M1电子钱包的余额的大小,以小余额来覆盖大余额,这样M1电子钱包的余额被CPU电子钱包的余额覆盖了,相当于M1电子钱包没有被非法充值,或者,当用户使用CPU卡在M1终端消费时,当时只从M1电子钱包的余额中扣减交易金额,而不能从CPU电子钱包的余额中扣减相应的交易金额,只有在下次CPU卡上电时,对CPU电子钱包和M1电子钱包进行同步处理,从而将CPU电子钱包的余额设置为与M1电子钱包的余额一致,相当于也从CPU电子钱包的余额中扣减了相应的交易金额,具体实现步骤如下:
步骤201:CPU卡进入终端的非接触式感应区,与终端按照ISO 14443接口协议建立连接;
步骤202:CPU卡上电,初始化,判断个人化标志位是否为0xAA,若是,则执行步骤203,若否,则执行步骤209;
在本实施例中,0xAA是CPU卡与发卡系统预先约定的,是自定义的,即预先约定当个人化标志位是0xAA时,则表示CPU卡已进行了个人化,否则表示CPU卡未进行个人化,并且CPU卡和发卡系统也可以预先约定任意其他字符作为标识,如0x01,即当个人化标志位是0x01时,则表示CPU卡已进行了个人化,否则表示CPU卡未进行个人化;
或者,在本实施例中发卡系统与CPU卡预先约定,若发卡系统已对CPU卡进行个人化时,则发卡系统在CPU卡中的文件系统的主目录MF下创建一个标识文件,当CPU卡判断内部已存在标识文件时,则表示CPU卡已进行了个人化,当CPU卡判断内部不存在标识文件时,则表示CPU卡未进行个人化。
步骤203:CPU卡获取M1的扇区密钥;
在本实施例中,预先约定存储M1电子钱包的余额的扇区号和块号,并根据该预先约定的扇区号来获取M1的扇区密钥,其中CPU卡获取M1的扇区密钥的方法具体为:调用API接口函数extern WORD GetMifareSectorPassword(BYTE*secPwdBuf,BYTE blockNo)来获取M1的扇区密钥。
步骤204:CPU卡获取M1电子钱包的余额;
在本实施例中,CPU卡根据步骤103中获得的M1的扇区密钥,以及预先约定的存储M1电子钱包的余额的块号来获取M1电子钱包的余额,其中获取M1电子钱包的余额的方法具体为:调用API接口函数extern BYTEGetMifarePurseBalance(BYTE*balanceBuf)来获取M1电子钱包的余额。
步骤205:获取CPU电子钱包的余额;
在本实施例中,获取CPU电子钱包的余额的方法具体为:
查找应用文件ADF的地址;
根据应用文件ADF查找ADF下的CPU电子钱包文件的地址;
根据查找得到的CPU电子钱包文件的地址和预先设定的CPU电子钱包的余额偏移来计算用于存储CPU电子钱包的余额的地址;
根据计算得到的用于存储CPU电子钱包的余额的地址来读取CPU电子钱包的余额;
或者,
预先约定CPU卡内有一块存储空间用于存储CPU电子钱包的余额的地址,则从上述存储空间中读取上述地址,再根据上述地址直接读取CPU电子钱包的余额。
步骤206:对M1电子钱包和CPU电子钱包进行同步,即比较M1电子钱包的余额与CPU电子钱包的余额的大小,若M1电子钱包的余额小于CPU电子钱包的余额,则执行步骤207,若CPU电子钱包的余额小于M1电子钱包的余额,则执行步骤208,若M1电子钱包的余额与CPU电子钱包的余额相等,则执行步骤209;
步骤207:将CPU电子钱包的余额设置为与M1电子钱包的余额一致,然后执行步骤209;
在本实施例步骤207中,将CPU电子钱包的余额设置为与M1电子钱包的余额一致的方法,具体为:
查找应用文件ADF的地址;
根据应用文件ADF查找ADF下的CPU电子钱包文件的地址;
根据查找得到的CPU电子钱包文件的地址和预先设定的CPU电子钱包的余额偏移来计算用于存储CPU电子钱包的余额的地址;
将上述地址所指向的存储区中的数据清空,然后将M1电子钱包的余额写入上述地址所指向的存储区中,作为CPU电子钱包的新的余额;
或者,
从预先约定的存储空间中读取CPU电子钱包的余额的地址;
将上述地址所指向的存储区中的数据清空,然后将M1电子钱包的余额写入上述地址所指向的存储区中,作为CPU电子钱包的新的余额;
进一步地,将CPU电子钱包的余额设置为与M1电子钱包的余额一致,还包括:更新CPU电子钱包的交易明细,具体方法为:
读取CPU电子钱包的最后一条交易明细的具体时间;
将M1电子钱包的每条交易明细的时间与上述读取得到的时间进行比较;
将M1电子钱包的交易明细的时间在上述读取得到的时间之后的所有交易明细追加到CPU电子钱包的交易明细中;
其中,交易明细具体为:交易金额、交易类型标识、终端机编号、交易日期和交易时间等;
进一步地,更新CPU电子钱包的交易明细之后,还包括:
根据追加到CPU电子钱包的交易明细中的M1电子钱包的交易明细的条数,相应地将CPU电子钱包的脱机交易序号加上相应的值,其中该相应的值与上述条数相同,如追加到CPU电子钱包的交易明细中的M1电子钱包的交易明细的条数为5,则相应地将CPU电子钱包的脱机交易序号加5。
步骤208:将M1电子钱包的余额设置为与CPU电子钱包的余额一致,然后执行步骤209;
在本实施例步骤208中,将M1电子钱包的余额设置为与CPU电子钱包的余额一致的方法具体为:
根据预先约定的扇区号,调用API接口函数extern WORDGetMifareSectorPassword(BYTE*secPwdBuf,BYTE blockNo)来获取M1的扇区密钥;
调用API接口函数extern BYTE SetMifarePurseBalance(BYTE*balanceBuf),并利用获得的M1的扇区密钥来设置M1电子钱包的余额,即将M1电子钱包的余额设置为与CPU电子钱包的余额一致;
其中,将M1电子钱包的余额设置为与CPU电子钱包的余额一致,还包括:更新M1电子钱包的交易明细,具体方法为:
读取M1电子钱包的交易明细的具体时间;
将CPU电子钱包的每条交易明细的时间与上述读取得到的时间进行比较;
将CPU电子钱包的交易明细的时间在上述读取得到的时间之后的所有交易明细追加到M1电子钱包的交易明细中;
其中,交易明细具体为:交易金额、交易类型标识、终端机编号、交易日期和交易时间等;
进一步地,更新M1电子钱包的交易明细之后,还包括:
根据追加到M1电子钱包的交易明细中的CPU电子钱包的交易明细的条数,相应地将M1电子钱包的脱机交易序号加上相应的值,其中该相应的值与上述条数相同,如追加到M1电子钱包的交易明细中的CPU电子钱包的交易明细的条数为2,则相应地将M1电子钱包的脱机交易序号加2。
步骤209:判断是否接收到寻卡的命令,若否,则继续等待接收命令并进行判断,若是,则执行步骤210;
步骤210:接收唤醒命令WUPA和请求命令REQA;
步骤211:返回应答命令ATQA,再进行防冲撞处理ANTICOL,然后接收选择命令SELECT;
步骤212:发送选择确认SAK给终端(MIFARE enabled);
步骤213:接收到非接触式的数据帧CL(contactless)Frame;
步骤214:判断是否有选择应答请求命令RATS Ccommand,若否,则执行步骤215,若是,则执行步骤216;
步骤215:执行M1钱包应用操作,直到掉电或是CPU卡离开终端的非接触式感应区;
步骤216:等待接收应用命令。
本实施例提供了一种对CPU卡内的CPU电子钱包和M1电子钱包进行同步的方法,CPU卡每次上电时,需要比较CPU电子钱包和M1电子钱包的余额的大小,以余额小的来覆盖余额大的,这样就解决了用户使用该CPU卡在M1终端非法圈存和/或非法消费时而造成的CPU电子钱包和M1电子钱包的余额的大小不一致的问题。
实施例3
本实施例提供了一种在CPU终端对CPU卡内的CPU电子钱包和M1电子钱包同时进行圈存的方法,CPU卡进入CPU终端的非感应区,且CPU终端与主机建立连接后,CPU卡上电,则此时会执行实施例2中所说的对CPU卡内的CPU电子钱包和M1电子钱包进行同步的步骤,然后再根据用户选择的应用进行不同的操作,具体地,本实施例中用户选择的是圈存应用,则本实施例提供了一种对CPU卡内的CPU电子钱包和M1电子钱包同时进行圈存的方法,具体实现步骤如下:
步骤301:终端显示银行的各种应用供用户选择;
其中,用户根据自己的需要对终端上显示的银行应用进行选择,在本实施例中,用户具体选择的圈存应用。
步骤302:CPU卡根据用户选择的圈存应用设置当前应用标识,并将该应用标识对应的应用序列号返回给终端;
步骤303:终端将CPU卡发过来的应用序列号转发给主机;
步骤304:主机保存终端发送的上述CPU卡对应的应用序列号;
步骤305:主机按照与终端预先约定的密钥标识,使用相应的圈存主密钥对上述应用序列号分散得到圈存子密钥;
步骤306:终端向CPU卡发送圈存初始化命令INITIALIZE FOR LOAD;
在本实施例中,圈存初始化命令INITIALIZE FOR LOAD用于初始化圈存交易;
INITIALIZE FOR LOAD命令报文分成:命令头+命令体
即为:(CLA+INS+P1+P2)+(Lc+Data+Le);
其中,CLA+INS+P1+P2为命令头,Lc+Data+Le为命令体,命令头为命令的编码,命令头中的CLA为指令类别,INS为指令代码,P1和P2为指令参数;命令体中的Lc为命令体内数据Data的长度,Le是期望的应答APDU数据字段的最大字节数;
并且INITIALIZE FOR LOAD命令报文数据域Data中包含的数据具体为密钥索引号、交易金额和终端机编号。
步骤307:CPU卡接收终端发送的INITIALIZE FOR LOAD命令,读取并保存上述命令中的数据,然后检查自身是否支持上述INITIALIZE FOR LOAD命令中包含的密钥索引号,若不支持,则执行步骤308,若支持,则执行步骤309;
步骤308:向终端返回状态码0x9403,并终止执行命令;
步骤309:生成一个伪随机数和一个过程密钥,并利用该过程密钥计算得到第一报文鉴别码MAC1;
在本实施例中,过程密钥是由密钥DLK分散得到的;
利用过程密钥计算得到第一报文鉴别码MAC1的方法具体为:
将交易前的CPU电子钱包的余额、交易金额、交易类型标识和终端机编号顺序链接,再利用过程密钥对链接后的数据进行加密,得到的加密后的数据的前四个字节即为第一报文鉴别码MAC1。
步骤310:CPU卡将INITIALIZE FOR LOAD响应报文返回给终端;
其中,INITIALIZE FOR LOAD响应报文由Data+sw1+sw2组成;
只有当INITIALIZE FOR LOAD命令执行成功时,则CPU卡返回给终端的INITIALIZE FOR LOAD响应报文中的状态码sw1和sw2为‘9000’,且INITIALIZEFOR LOAD响应报文数据域Data中包含的数据为交易前的CPU电子钱包的余额、CPU电子钱包的联机交易序号、密钥版本号、算法标识、伪随机数和MAC1,若命令执行不成功,则CPU卡返回给终端的INITIALIZE FOR LOAD响应报文中只含有状态码sw1和sw2,且状态码sw1和sw2不为‘9000’。
步骤311:终端接收CPU卡返回的INITIALIZE FOR LOAD响应报文,并判断状态码是否为‘9000’,若不是,则终止交易,若是,则执行步骤312;
步骤312:终端将INITIALIZE FOR LOAD响应报文中的所有响应数据发送给主机;
步骤313:主机接收并保存终端发送的所有响应数据,按照CPU卡在步骤309中生成过程密钥相同的方法来生成一个相同的过程密钥,并用该过程密钥来校验接收到的响应数据中的MAC1是否有效,若无效,则执行步骤314,若有效,则执行步骤315;
在本实施例步骤313中,利用生成的过程密钥来校验接收到的MAC1是否正确的方法具体为:
将交易前的CPU电子钱包的余额、交易金额、交易类型标识和终端机编号顺序链接,然后利用生成的过程密钥对链接得到的数据进行加密,再比较得到的加密后的数据的前四个字节与MAC1是否相同,若不相同,则校验MAC1不正确,若相同,则校验MAC1正确。
步骤314:主机通知终端不接受圈存交易,交易终止;
步骤315:主机从用户在银行相应的帐户中扣减交易金额,并利用步骤213中生成的过程密钥计算得到第二报文鉴别码MAC2;
在本实施例中,利用步骤313中生成的过程密钥计算得到第二报文鉴别码MAC2的方法具体为:
将交易金额、交易类型标识、终端机编号、主机的交易日期和主机的交易时间顺序链接,再利用生成的过程密钥对链接得到的数据进行加密,得到的加密后的数据的前四个字节即为第二报文鉴别码MAC2。
步骤316:主机将CPU电子钱包的联机交易序号加1,并向终端发送一个圈存交易接受报文;
在本实施例步骤316中,圈存交易接受报文数据域中包含的数据具体为MAC2、主机的交易日期和主机的交易时间。
步骤317:终端接收主机发送的圈存交易接受报文,读取并保存上述圈存交易接受报文中的数据,然后向CPU卡发送圈存命令CREDIT FOR LOAD;
在本实施例中,圈存命令CREDIT FOR LOAD用于圈存交易;
CREDIT FOR LOAD命令报文分成:命令头+命令体
即为:(CLA+INS+P1+P2)+(Lc+Data+Le);
其中,CREDIT FOR LOAD命令报文数据域中的数据具体为主机的交易日期、主机的交易时间和MAC2。
步骤318:CPU卡接收终端发送的CREDIT FOR LOAD命令,读取并保存上述命令中的数据,然后校验上述CREDIT FOR LOAD命令数据域中的MAC2是否有效,若,则执行步骤319,若正确,则执行步骤320;
在本实施例中,校验MAC2是否正确的方法,具体为:
将交易金额、交易类型标识、终端机编号、交易日期和交易时间顺序链接,然后使用步骤309中生成的过程密钥对链接得到的数据进行加密,再比较加密后得到的数据的前四个字节与CREDIT FOR LOAD命令数据域中的MAC2是否相同,若不相同,则MAC2不正确,若相同,则MAC2正确。
步骤319:CPU卡向终端返回状态码0x9302,提示MAC2无效,终止进行圈存操作;
步骤320:CPU卡将CPU电子钱包的联机交易序号加1,将交易金额大小加到CPU电子钱包的余额上;
在本实施例步骤320中,将交易金额加到CPU电子钱包的余额上的方法,具体为:
查找应用文件ADF的地址;
根据应用文件ADF查找ADF下的CPU电子钱包文件的地址;
根据查找得到的CPU电子钱包文件的地址和预先设定的CPU电子钱包的余额的偏移来计算用于存储CPU电子钱包的余额的地址;
读取上述地址所指向的存储区中的数据,将交易金额与读取得到的数据相加,并用相加得到的数据来覆盖上述地址所指向的存储区中的数据,将此相加得到的数据作为CPU电子钱包新的余额;
将交易金额加到CPU电子钱包的余额上之后还可以包括:更新CPU电子钱包的交易明细;
其中,需要更新的CPU电子钱包的交易明细具体为:交易金额、交易类型标识、终端编号、主机的交易日期和主机的交易时间,具体地,CPU卡将交易金额、交易类型标识、终端编号、主机的交易日期和主机的交易时间顺序链接组成一个记录以便更新。
步骤321:CPU卡获得M1的扇区密钥;
在本实施例中,预先约定存储M1电子钱包的余额的扇区号和块号,并根据该预先约定的扇区号来获取M1的扇区密钥,其中,CPU卡获得M1的扇区密钥的方法具体为:调用API接口函数extern WORD GetMifareSectorPassword(BYTE*secPwdBuf,BYTE blockNo)来获得M1的扇区密钥。
步骤322:CPU卡将M1电子钱包的联机交易序号加1,设置M1电子钱包的余额,即用步骤320中更新后的CPU电子钱包的余额来覆盖M1电子钱包的余额;
在本实施例中,CPU卡设置M1电子钱包的余额的方法具体为:调用API接口函数extern BYTE SetMifarePurseBalance(BYTE*balanceBuf),并利用步骤321中获得的扇区密钥来设置M1电子钱包的余额,即用步骤320中更新后的CPU电子钱包的余额来覆盖M1电子钱包的余额;
设置M1电子钱包的余额之后,还可以包括:更新M1电子钱包的交易明细;
具体地,将步骤320中更新的后CPU电子钱包的交易明细追加到M1电子钱包的交易明细中;
交易明细具体为:交易金额、交易类型标识、终端机编号、交易日期和交易时间等
步骤323:CPU卡用DTK左右8个字节进行异或运算,再利用异或运算得到的结果计算交易验证码TAC码;
在本实施例步骤323中,利用异或运算得到的结果计算TAC码,具体为:
将交易后的CPU电子钱包的余额或M1电子钱包的余额、加1前的CPU卡的联机交易序号、交易金额、交易类型标识、终端机编号、主机的交易日期和主机的交易时间顺序链接,再利用异或运算得到的结果对链接得到的数据进行加密,得到的加密后的数据的前四个字节即为TAC码。
步骤324:CPU卡将TAC码作为CREDIT FOR LOAD命令的响应报文的数据域返回给终端;
步骤325:终端接收CREDIT FOR LOAD命令的响应报文,并保存TAC码,交易结束。
在本实施例步骤325中,终端保存TAC码后可以对TAC码进行验证,也可以不立即对TAC码进行验证。
本实施例提供了一种在CPU终端对CPU卡内的CPU电子钱包和M1电子钱包同时进行圈存的方法,这样就避免了通过原有的通过M1终端进行圈存时的不安全的问题,并提高了圈存的安全性。
实施例4
本实施例提供了一种在CPU终端使用CPU卡内的CPU电子钱包和M1电子钱包进行消费的方法,在本实施例中,CPU卡进入CPU终端的非接触感应区,CPU卡上电,则此时会执行实施例2中所说的对CPU电子钱包和M1电子钱包进行同步的步骤,然后再根据用户选择的应用进行不同的操作,具体地,本实施例中用户选择的是消费应用,则本实施例提供了一种使用CPU卡内的CPU电子钱包和M1电子钱包进行消费的方法,在CPU终端使用CPU电子钱包进行消费时,从CPU电子钱包的余额中扣减交易金额的同时,可以不从M1电子钱包的余额中扣减相应的金额,然后通过下次上电时的同步来从M1电子钱包的余额中扣减相应的金额,相应地,也可以直接从M1电子钱包的余额中扣减相应的金额,本实施例以从CPU电子钱包的余额中扣减交易金额的同时,也直接从M1电子钱包的余额中扣减相应的金额为例来进行说明,具体实现步骤如下:
步骤401:终端向CPU卡发送消费初始化命令INITIALIZE FOR PURCHASE;
在本实施例中,消费初始化命令INITIALIZE FOR PURCHASE用于初始化消费交易;
INITIALIZE FOR PURCHASE命令报文分成:命令头+命令体
即为:(CLA+INS+P1+P2)+(Lc+Data+Le);
其中,CLA+INS+P1+P2为命令头,Lc+Data+Le为命令体,命令头为命令的编码,命令头中的CLA为指令类别,INS为指令代码,P1和P2为指令参数;命令体中的Lc为命令体内数据Data的长度,Le是期望的应答APDU数据字段的最大字节数;
并且INITIALIZE FOR PURCHASE命令报文数据域Data中包含的数据具体为密钥索引号、交易金额和终端机编号。
步骤402:CPU卡接收终端发送的INITIALIZE FOR PURCHASE命令,读取并保存上述指令中的数据,然后检查自身是否支持上述INITIALIZE FOR PURCHASE命令中包含的密钥索引号,若不支持,则执行步骤403,若支持,则执行步骤404;
步骤403:向终端返回状态码0x9403,并终止执行命令;
步骤404:读取CPU电子钱包的余额,比较上述INITIALIZE FOR PURCHASE命令中包含的交易金额的大小是否大于CPU电子钱包的余额的大小,若是,则执行步骤405,若否,则执行步骤406;
在本实施例步骤404中,读取CPU电子钱包的余额的方法具体为:
查找应用文件ADF的地址;
根据应用文件ADF查找ADF下的CPU电子钱包文件的地址;
根据查找得到的CPU电子钱包文件的地址和预先设定的CPU电子钱包的余额的偏移来计算用于存储CPU电子钱包的余额的地址;
根据计算得到的用于存储CPU电子钱包的余额的地址来读取CPU电子钱包的余额。
步骤405:向终端返回状态码0x9401,并终止执行命令;
步骤406:CPU卡生成一个伪随机数和一个过程密钥;
在本实施例中,过程密钥用于CPU电子钱包或M1电子钱包的消费交易,过程密钥是用密钥DPK分散得到的。
步骤407:CPU卡发送INITIALIZE FOR PURCHASE命令的响应报文给终端;
其中,INITIALIZE FOR PURCHASE响应报文由Data+sw1+sw2组成;
只有当INITIALIZE FOR PURCHASE命令执行成功时,则CPU卡返回给终端的INITIALIZE FOR PURCHASE响应报文中的状态码sw1和sw2为‘9000’,且INITIALIZE FOR PURCHASE响应报文数据域Data中包含的数据具体为CPU卡在步骤406中生成的伪随机数和CPU电子钱包的脱机交易序号,若命令执行不成功,则CPU卡返回给终端的INITIALIZE FOR PURCHAS响应报文中只含有状态码sw1和sw2,且状态码sw1和sw2不为‘9000’。
步骤408:终端接收CPU卡返回的INITIALIZE FOR PURCHAS响应报文,并判断状态码是否为‘9000’,若不是,则终止交易,若是,则执行步骤409;
步骤409:终端利用INITIALIZE FOR PURCHAS响应报文数据域Data中的伪随机数和CPU电子钱包的脱机交易序号,并按照与CPU卡生成过程密钥相同的方法生成一个相同的过程密钥,并计算得到第三报文鉴别码MAC3;
在本实施例中,计算得到第三报文鉴别码MAC3的方法具体为:
将交易金额、交易类型标识、终端机编号、终端的交易日期和终端的交易时间顺序链接,再用生成的过程密钥对链接得到的数据进行加密,得到的加密后的数据的前四个字节即为第三报文鉴别码MAC3。
步骤410:终端向CPU卡发送消费交易命令DEBIT FOR PURCHASE WITHDRAW;
DEBIT FOR PURCHASE WITHDRAW命令报文分成:命令头+命令体
即为:(CLA+INS+P1+P2)+(Lc+Data+Le);
其中,DEBIT FOR PURCHASE WITHDRAW命令报文数据域Data中的数据具体为终端交易序号、终端的交易日期、终端的交易时间和MAC3。
步骤411:CPU卡接收DEBIT FOR PURCHASE WITHDRAW命令,读取并保存上述命令中的数据,然后验证DEBIT FOR PURCHASE WITHDRAW命令数据域Data中的MAC3是否有效,若无效,则执行步骤412,若有效,则执行步骤413;
在本实施例中,CPU卡验证DEBIT FOR PURCHASE WITHDRAW命令数据域Data中的MAC1是否有效的方法,具体为:
CPU卡将交易金额、交易类型标识、终端机编号、终端的交易日期和终端的交易时间顺序链接,并用步骤406中生成的过程密钥对链接得到的数据进行加密,再比较得到的加密后的数据的前四个字节与DEBIT FOR PURCHASE WITHDRAW命令数据域Data中的MAC3是否相同,若不相同,则MAC3无效,若相同,则MAC3有效。
步骤412:向终端返回状态码0x9302,终止交易;
步骤413:CPU卡将CPU钱包的脱机交易序号加1,并从CPU电子钱包的余额中扣减交易金额;
在本实施例步骤413中,从CPU电子钱包的余额中扣减交易金额的方法,具体为:
查找应用文件ADF的地址;
根据应用文件ADF查找ADF下的CPU电子钱包文件的地址;
根据查找得到的CPU电子钱包文件的地址和预先设定的CPU电子钱包的余额的偏移来计算用于存储CPU电子钱包的余额的地址;
读取上述地址所指向的存储区中的数据,将读取得到的数据减去交易金额,并用相减得到的数据来覆盖上述地址所指向的存储区中的数据,将此相减得到的数据作为CPU电子钱包新的余额;
从CPU电子钱包的余额中扣减交易金额之后,还包括:更新CPU电子钱包的交易明细;
其中,需要更新的CPU电子钱包的相关交易明细具体为:交易金额、交易类型标识、终端编号、终端的交易日期和终端的交易时间,具体地,CPU卡将交易金额、交易类型标识、终端编号、终端的交易日期和终端的交易时间顺序链接组成一个记录以便更新。
步骤414:CPU卡获得M1的扇区密钥;
在本实施例中,预先约定存储M1电子钱包的余额的扇区号和块号,并根据该预先约定的扇区号来获取M1的扇区密钥,其中CPU卡获得M1的扇区密钥的方法具体为:调用API接口函数extern WORD GetMifareSectorPassword(BYTE*secPwdBuf,BYTE blockNo)来获得M1的扇区密钥。
步骤415:CPU卡将M1电子钱包的脱机交易序号加1,并设置M1电子钱包的余额,即用步骤413中更新后的CPU电子钱包的余额来覆盖M1电子钱包的余额;
在本实施例中,CPU卡设置M1电子钱包的余额的方法具体为:调用API接口函数extern BYTE SetMifarePurseBalance(BYTE*balanceBuf),并利用步骤414中获得的扇区密钥来设置M1电子钱包的余额,即用步骤413中更新后的CPU电子钱包的余额来覆盖M1电子钱包的余额;
设置M1电子钱包的余额之后,还可以包括:更新M1电子钱包的交易明细;
具体地,将步骤413中更新的CPU电子钱包的交易明细追加到M1电子钱包的交易明细中;
交易明细具体为:交易金额、交易类型标识、终端机编号、交易日期和交易时间等。
步骤416:CPU卡生成第四报文鉴别码MAC4;
在本实施例中,生成第四报文鉴别码MAC4方法具体为:
用步骤406中生成的过程密钥对交易金额进行加密,得到的加密后的数据的前四个字节即为第四报文鉴别码MAC4。
步骤417:用DTK左右8个字节进行异或运算,并利用异或运算得到的结果来计算交易验证码TAC码;
在本实施例中,利用异或运算得到的结果来计算TAC码的方法具体为:
将交易金额、交易类型标识、终端机编号、终端交易序号、终端的交易日期和终端的交易时间顺序链接,并用异或运算得到的结果对链接得到的数据进行加密,得到的加密后的数据的前四个字节即为TAC码。
步骤418:CPU卡发送DEBIT FOR PURCHASE WITHDRAW命令的响应报文给终端;
其中,INITIALIZE FOR PURCHASE响应报文由Data+sw1+sw2组成;
INITIALIZE FOR PURCHASE响应报文的数据域Data中包含有MAC2和TAC码。
步骤419:终端接收CPU卡发送的DEBIT FOR PURCHASE WITHDRAW命令的响应报文,并判断INITIALIZE FOR PURCHASE响应报文数据域Data中包含的MAC4是否有效,若无效,则执行步骤420,若有效,则执行步骤421;
步骤420:终端进入自定义的错误处理流程;
步骤421:交易正常结束。
本实施例提供的是在CPU终端进行消费的实施例,在CPU终端进行消费时,CPU卡不仅从CPU电子钱包的余额中扣减相应的交易金额,并且同时从M1电子钱包的余额中也扣减相应的交易金额,将CPU电子钱包的余额设置为与M1电子钱包的余额一致,这样就保证了消费的一致性。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (19)

1.一种对双电子钱包进行圈存的方法,其特征在于,所述方法包括:
CPU卡进入终端的非接触式感应区,所述终端与所述CPU卡按照ISO 14443接口协议建立连接;
所述CPU卡上电并初始化,对第一电子钱包和第二电子钱包进行同步,并等待接收所述终端发送命令;
所述终端向所述CPU卡发送圈存初始化命令;
所述CPU卡接收所述圈存初始化命令,执行圈存初始化操作,并返回所述圈存初始化命令的响应报文给所述终端;
所述终端接收所述圈存初始化命令的响应报文,并将所述圈存初始化命令的响应报文中的数据发送给主机;
所述主机接收并保存所述数据,向所述终端发送圈存交易接受报文;
所述终端接收所述圈存交易接受报文,并向所述CPU卡发送圈存命令;
所述CPU卡接收所述圈存命令,对所述第二电子钱包进行圈存操作,同时更新所述第一电子钱包的余额,并返回所述圈存命令的响应报文给所述终端;
所述终端接收所述圈存命令的响应报文,圈存交易结束。
2.如权利要求1所述的对双电子钱包进行圈存的方法,其特征在于,所述CPU卡进入终端的非接触式感应区内之前,所述方法还包括:
所述CPU卡的发卡系统对所述CPU卡中的逻辑加密卡部分和CPU部分分别进行个人化,设置个人化标志位;
将所述第一电子钱包在逻辑加密卡部分中所在的扇区的扇区访问密钥写入所述CPU卡中的CPU部分中;
将所述CPU卡中的个人化标志位设置为第一标识;
或者,
所述CPU卡的发卡系统对所述CPU卡中的逻辑加密卡部分和CPU部分分别进行个人化,创建一个标识文件;
将所述第一电子钱包在逻辑加密卡部分中所在的扇区的扇区访问密钥写入所述CPU卡中的CPU部分中。
3.如权利要求1或2所述的对双电子钱包进行圈存的方法,其特征在于,所述第一电子钱包为基于逻辑加密芯片标准的金融应用,预先约定存储区在CPU卡的逻辑加密卡部分中的扇区号和块号,其中,所述存储区用于存储所述第一电子钱包的余额。
4.如权利要求1所述的对双电子钱包进行圈存的方法,其特征在于,所述第二电子钱包为使用ISO 14443接口协议实现的符合银行标准的电子钱包。
5.如权利要求1所述的对双电子钱包进行圈存的方法,其特征在于,所述CPU卡对第一电子钱包和第二电子钱包进行同步之前,所述方法还包括:
所述CPU卡判断个人化标志位是否为预先约定的标识,或者判断内部是否存在标识文件;
若否,则所述CPU卡不对第一电子钱包和第二电子钱包进行同步,直接等待接收所述终端发送命令;
若是,则所述CPU卡对第一电子钱包和第二电子钱包进行同步,然后等待接收所述终端发送命令。
6.如权利要求1所述的对双电子钱包进行圈存的方法,其特征在于,所述CPU卡对所述第一电子钱包和第二电子钱包进行同步的方法,具体为:
所述CPU卡获取所述第一电子钱包的余额;
所述CPU卡获取所述第二电子钱包的余额;
所述CPU卡比较所述第一电子钱包和所述第二电子钱包的余额的大小;
若所述第一电子钱包的余额小于所述第二电子钱包的余额,则所述CPU卡将所述第二电子钱包的余额设置为与所述第一电子钱包的余额一致,然后继续进行寻卡操作;
若所述第二电子钱包的余额小于所述第一电子钱包的余额,则所述CPU卡将所述第一电子钱包的余额设置为与所述第二电子钱包的余额一致,然后继续进行寻卡操作;
若所述第一电子钱包的余额与所述第二电子钱包的余额相等,则所述CPU卡继续进行寻卡操作。
7.如权利要求1所述的对双电子钱包进行圈存的方法,其特征在于,所述CPU卡进行圈存初始化操作的步骤,具体为:
所述CPU卡读取并保存所述圈存初始化命令中的数据,其中所述数据包括密钥索引号和交易金额;
所述CPU卡检查自身是否支持所述密钥索引号;
若不支持,则返回错误信息给终端,终止执行圈存初始化操作;
若支持,则生成一个伪随机数和一个过程密钥,并用所述过程密钥计算得到第一报文鉴别码。
8.如权利要求1所述的对双电子钱包进行圈存的方法,其特征在于,所述CPU卡接收所述圈存命令,对所述第二电子钱包进行圈存操作的步骤,具体为:
读取并保存所述圈存命令中的数据,其中,所述数据包含有第二报文鉴别码;
使用所述过程密钥验证所述第二报文鉴别码是否有效;
若无效,则返回所述第二报文鉴别码无效的信息给终端,终止进行圈存操作;
若有效,则将所述交易金额加到所述第二电子钱包的余额上。
9.如权利要求8所述的对双电子钱包进行圈存的方法,其特征在于,所述将交易金额加到所述第二电子钱包的余额上的方法,具体为:
查找应用文件的地址;
根据所述应用文件查找所述应用文件下的第二电子钱包文件的地址;
根据所述查找得到的第二电子钱包文件的地址和预先设定的第二电子钱包的余额偏移计算用于存储所述第二电子钱包的余额的地址;
读取所述计算得到的用于存储所述第二电子钱包的余额的地址所指向的存储区中的数据,将所述交易金额与所述读取得到的数据相加,并用所述相加得到的数据来覆盖所述计算得到的用于存储所述第二电子钱包的余额的地址所指向的存储区中的数据,并将所述相加得到的数据作为所述第二电子钱包新的余额。
10.如权利要求8所述的对双电子钱包进行圈存的方法,其特征在于,所述将所述交易金额加到所述第二电子钱包的余额上之后,还包括:
将所述第二电子钱包的联机交易序号加1;
更新所述第二电子钱包的相关交易明细。
11.如权利要求1所述的对双电子钱包进行圈存的方法,其特征在于,所述更新所述第一电子钱包的余额,具体为将第一电子钱包的余额设置为与所述第二电子钱包的余额相同,包括:
根据所述存储所述第一电子钱包的余额的存储区在CPU卡的逻辑加密卡部分中的扇区号,并调用函数获取所述第一电子钱包的扇区密钥;
根据所述存储所述第一电子钱包的余额的存储区在CPU卡的逻辑加密卡部分中的块号,以及所述扇区密钥,调用函数设置所述第一电子钱包的余额,即用所述更新后的第二电子钱包的余额覆盖所述第一电子钱包的余额。
12.如权利要求1所述的对双电子钱包进行圈存的方法,其特征在于,所述更新所述第一电子钱包的余额之后,还包括:
将所述第一电子钱包的联机交易序号加1;
更新所述第一电子钱包的相关交易明细。
13.如权利要求1所述的对双电子钱包进行圈存的方法,其特征在于,所述CPU卡等待接收所述终端发送命令时,若所述终端向所述CPU卡发送消费初始化命令,则所述方法还包括:
所述CPU卡接收所述消费初始化命令,进行消费初始化操作,并返回所述消费初始化命令的响应报文给终端;
所述终端接收所述消费初始化命令的响应报文,并向所述CPU卡发送消费命令;
所述CPU卡接收所述消费命令,使用所述第二电子钱包进行消费,并更新所述第一电子钱包的余额,返回所述消费命令的响应报文给所述终端;
所述终端接收所述消费命令的响应报文,消费交易结束。
14.如权利要求13所述的对双电子钱包进行圈存的方法,其特征在于,所述CPU卡进行消费初始化操作的步骤,具体为:
所述CPU卡读取并保存所述消费初始化命令中的数据,其中,所述数据包括密钥索引号和交易金额;
所述CPU卡检查自身是否支持所述密钥索引号;
若不支持,则返回错误信息给终端,终止执行消费初始化操作;
若支持,则读取所述第二电子钱包的余额,判断所述交易金额是否大于所述第二电子钱包的余额;
若是,则返回错误信息给终端,终止执行消费初始化操作;
若否,则生成一个伪随机数和一个过程密钥。
15.如权利要求13所述的对双电子钱包进行圈存的方法,其特征在于,所述CPU卡接收所述消费命令,使用所述第二电子钱包进行消费的步骤,具体为:
读取并保存所述消费命令中的数据,其中,所述数据包含第三报文鉴别码;
使用所述过程密钥验证所述第三报文鉴别码是否有效;
若无效,则返回所述第三报文鉴别码无效的信息给终端,终止进行消费操作;
若有效,则从所述第二电子钱包的余额中扣减所述交易金额。
16.如权利要求15所述的对双电子钱包进行圈存的方法,其特征在于,所述从第二电子钱包的余额中扣减所述交易金额的方法,具体为:
查找应用文件的地址;
根据所述应用文件查找所述应用文件下的第二电子钱包文件的地址;
根据所述查找得到的第二电子钱包文件的地址和预先设定的第二电子钱包的余额偏移计算用于存储所述第二电子钱包的余额的地址;
读取所述计算得到的用于存储所述第二电子钱包的余额的地址所指向的存储区中的数据,将所述读取得到的数据减去所述交易金额,并用相减得到的数据覆盖所述计算得到的用于存储所述第二电子钱包的余额的地址所指向的存储区中的数据,并将所述相减得到的数据作为所述第二电子钱包新的余额。
17.如权利要求15所述的对双电子钱包进行圈存的方法,其特征在于,所述从所述第二电子钱包的余额中扣减所述交易金额之后,还包括:
将所述第二电子钱包的脱机交易序号加1;
更新所述第二电子钱包的交易明细。
18.如权利要求13所述的对双电子钱包进行圈存的方法,其特征在于,所述更新所述第一电子钱包的余额,具体为将所述第一电子钱包的余额设置为与所述第二电子钱包的余额相同,包括:
根据所述存储第一电子钱包的余额的存储区在CPU卡的逻辑加密卡部分中的扇区号,并调用函数来获取所述第一电子钱包的扇区密钥;
根据所述存储所述第一电子钱包的余额的存储区在CPU卡的逻辑加密卡部分中的块号,以及所述扇区密钥,调用函数来设置所述第一电子钱包的余额,即用所述更新后的第二电子钱包的余额覆盖所述第一电子钱包的余额。
19.如权利要求13所述的对双电子钱包进行圈存的方法,其特征在于,所述更新所述第一电子钱包的余额之后,还包括:
将所述第一电子钱包的脱机交易序号加1;
更新所述第一电子钱包的交易明细。
CN2009102378752A 2009-11-20 2009-11-20 一种对双电子钱包进行圈存的方法 Active CN101799954B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN2009102378752A CN101799954B (zh) 2009-11-20 2009-11-20 一种对双电子钱包进行圈存的方法
PCT/CN2010/076701 WO2011060662A1 (zh) 2009-11-20 2010-09-07 一种对双电子钱包进行圈存的方法
US12/989,764 US9378498B2 (en) 2009-11-20 2010-09-07 Method for loading double e-wallets

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102378752A CN101799954B (zh) 2009-11-20 2009-11-20 一种对双电子钱包进行圈存的方法

Publications (2)

Publication Number Publication Date
CN101799954A true CN101799954A (zh) 2010-08-11
CN101799954B CN101799954B (zh) 2012-08-08

Family

ID=42595624

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102378752A Active CN101799954B (zh) 2009-11-20 2009-11-20 一种对双电子钱包进行圈存的方法

Country Status (1)

Country Link
CN (1) CN101799954B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011060662A1 (zh) * 2009-11-20 2011-05-26 北京飞天诚信科技有限公司 一种对双电子钱包进行圈存的方法
WO2012000438A1 (zh) * 2010-06-29 2012-01-05 飞天诚信科技股份有限公司 一种对电子钱包进行操作的方法
CN102568097A (zh) * 2010-12-08 2012-07-11 邵通 一种增强电子钱包安全的方法和系统
CN102681936A (zh) * 2012-05-03 2012-09-19 中国农业银行股份有限公司 一种针对金融系统测试结果的验证方法及装置
CN103473850A (zh) * 2012-06-06 2013-12-25 中国银联股份有限公司 一种脱机圈存方法和系统
CN103679976A (zh) * 2012-09-25 2014-03-26 中国银联股份有限公司 一种对ic卡进行读写的系统和方法
CN103778530A (zh) * 2012-10-22 2014-05-07 中国移动通信集团安徽有限公司 一种行业应用账户空中圈存的方法、系统及装置
CN105427098A (zh) * 2015-11-02 2016-03-23 飞天诚信科技股份有限公司 一种不同应用之间信息共享的实现方法及装置
CN105761071A (zh) * 2016-02-24 2016-07-13 恒宝股份有限公司 一种安全充值方法及其移动充值系统
CN106326793A (zh) * 2015-06-30 2017-01-11 阿里巴巴集团控股有限公司 信息处理方法及装置
CN106779635A (zh) * 2016-11-22 2017-05-31 飞天诚信科技股份有限公司 一种智能卡及其卡内多账户余额共享方法
WO2017211231A1 (zh) * 2016-06-06 2017-12-14 中城智慧科技有限公司 基于ccks的cpu卡的充值方法
CN108090763A (zh) * 2017-12-05 2018-05-29 河南省视博电子股份有限公司 一种可在线支付与溯源的智能电子秤及交易方法
CN109544322A (zh) * 2018-11-12 2019-03-29 中国银行股份有限公司 贷款承诺账务信息处理方法及装置
CN110309638A (zh) * 2019-03-18 2019-10-08 上海飓金嵘通网络科技有限公司 一种基于手机钱包电子证照的授权注册方法及系统
CN112215596A (zh) * 2019-07-10 2021-01-12 南京赛凯斯信息科技有限公司 一种离线电子钱包交易的双向容错控制方法
US10902412B2 (en) 2017-08-16 2021-01-26 Advanced New Technologies Co., Ltd. Method and device for account creation, account refilling and data synchronization

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1161712C (zh) * 1999-09-06 2004-08-11 李东声 一种实现ic卡安全交易的方法
CN1908995A (zh) * 2005-08-03 2007-02-07 李东声 实现交易ic卡联机交易的方法及其网络系统

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011060662A1 (zh) * 2009-11-20 2011-05-26 北京飞天诚信科技有限公司 一种对双电子钱包进行圈存的方法
WO2012000438A1 (zh) * 2010-06-29 2012-01-05 飞天诚信科技股份有限公司 一种对电子钱包进行操作的方法
CN102568097A (zh) * 2010-12-08 2012-07-11 邵通 一种增强电子钱包安全的方法和系统
CN102681936A (zh) * 2012-05-03 2012-09-19 中国农业银行股份有限公司 一种针对金融系统测试结果的验证方法及装置
CN102681936B (zh) * 2012-05-03 2014-11-19 中国农业银行股份有限公司 一种针对金融系统测试结果的验证方法及装置
CN103473850B (zh) * 2012-06-06 2016-09-28 中国银联股份有限公司 一种脱机圈存方法和系统
CN103473850A (zh) * 2012-06-06 2013-12-25 中国银联股份有限公司 一种脱机圈存方法和系统
CN103679976A (zh) * 2012-09-25 2014-03-26 中国银联股份有限公司 一种对ic卡进行读写的系统和方法
CN103679976B (zh) * 2012-09-25 2016-02-17 中国银联股份有限公司 一种对ic卡进行读写的系统和方法
CN103778530A (zh) * 2012-10-22 2014-05-07 中国移动通信集团安徽有限公司 一种行业应用账户空中圈存的方法、系统及装置
CN106326793A (zh) * 2015-06-30 2017-01-11 阿里巴巴集团控股有限公司 信息处理方法及装置
CN105427098B (zh) * 2015-11-02 2020-02-11 飞天诚信科技股份有限公司 一种不同应用之间信息共享的实现方法及装置
CN105427098A (zh) * 2015-11-02 2016-03-23 飞天诚信科技股份有限公司 一种不同应用之间信息共享的实现方法及装置
CN105761071B (zh) * 2016-02-24 2020-12-25 恒宝股份有限公司 一种安全充值方法及其移动充值系统
CN105761071A (zh) * 2016-02-24 2016-07-13 恒宝股份有限公司 一种安全充值方法及其移动充值系统
WO2017211231A1 (zh) * 2016-06-06 2017-12-14 中城智慧科技有限公司 基于ccks的cpu卡的充值方法
CN106779635B (zh) * 2016-11-22 2020-10-13 飞天诚信科技股份有限公司 一种智能卡及其卡内多账户余额共享方法
CN106779635A (zh) * 2016-11-22 2017-05-31 飞天诚信科技股份有限公司 一种智能卡及其卡内多账户余额共享方法
US10902412B2 (en) 2017-08-16 2021-01-26 Advanced New Technologies Co., Ltd. Method and device for account creation, account refilling and data synchronization
CN108090763A (zh) * 2017-12-05 2018-05-29 河南省视博电子股份有限公司 一种可在线支付与溯源的智能电子秤及交易方法
CN109544322A (zh) * 2018-11-12 2019-03-29 中国银行股份有限公司 贷款承诺账务信息处理方法及装置
CN109544322B (zh) * 2018-11-12 2021-08-20 中国银行股份有限公司 贷款承诺账务信息处理方法及装置
CN110309638A (zh) * 2019-03-18 2019-10-08 上海飓金嵘通网络科技有限公司 一种基于手机钱包电子证照的授权注册方法及系统
CN110309638B (zh) * 2019-03-18 2022-07-01 上海飓金嵘通网络科技有限公司 一种基于手机钱包电子证照的授权注册方法及系统
CN112215596A (zh) * 2019-07-10 2021-01-12 南京赛凯斯信息科技有限公司 一种离线电子钱包交易的双向容错控制方法

Also Published As

Publication number Publication date
CN101799954B (zh) 2012-08-08

Similar Documents

Publication Publication Date Title
CN101799954B (zh) 一种对双电子钱包进行圈存的方法
Fancher In your pocket: smartcards
CN100438409C (zh) 具有金融交易报文处理能力的智能卡及其工作方法
CN102656599B (zh) 移动支付应用程序体系结构
EP0706692B1 (en) Host and user transaction system
US8583493B2 (en) Payment terminal using a mobile communication device, such as a mobile phone; a method of direct debit payment transaction
US6145739A (en) System and method for performing transactions and an intelligent device therefor
US7992792B2 (en) Portable payment device
US9378498B2 (en) Method for loading double e-wallets
RU2635233C2 (ru) Механизм, позволяющий использовать одноразовые карты в системе, предназначенной для приема карт согласно стандартам международной индустрии платежей
CN102044114A (zh) 一种对电子钱包进行消费的方法
CN101840550A (zh) 实现账单现场生成和支付的方法
CN101105776A (zh) 一种内嵌cpu ic的标准扩展卡及实现电子支付的方法
CN101655949A (zh) 智能卡充值系统及方法
CN102005087A (zh) 一种多银行卡合一装置及用其进行支付的方法
CN101799955B (zh) 一种对双电子钱包进行操作的方法
CN110619525B (zh) 一种基于区块链的储值卡系统
CN103778713B (zh) 金融ic卡系统
CN102013132B (zh) 一种对电子钱包进行复合圈存的方法
CN103235995A (zh) 一种基于nfc手机的电子防伪和物流管理系统
TW200917140A (en) A wireless communication transaction system and method using a wireless card reader
Lai et al. A grey lock method to support once pre-freezing mechanism in IC card
CN2929835Y (zh) 具有金融交易报文处理能力的智能卡
CN100362528C (zh) 兼容逻辑加密卡的非接触cpu卡
CN202167079U (zh) 自动售货机非接触式cpu卡拍卡支付系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant