一种具有恢复机制的加密存储卡及其工作方法与流程

文档序号:12612503阅读:448来源:国知局
一种具有恢复机制的加密存储卡及其工作方法与流程

本发明涉及智能卡领域,特别涉及一种具有恢复机制的加密存储卡及其工作方法。



背景技术:

加密存储卡(M1卡),作为一种可读可写的多功能的非接触式IC卡,广泛应用于公交、轮渡和地铁的自动收费系统。

现有技术中,M1卡本身没有恢复机制,所有的恢复机制都集中在终端,给终端增加了很多任务量。一旦M1卡在交易过程中出现问题(例如掉电),M1卡自身无法进行数据恢复,进而无法进行正常工作。



技术实现要素:

本发明提供了一种具有恢复机制的加密存储卡及其工作方法,解决了上述技术问题。

本发明提供了一种具有恢复机制的加密存储卡的工作方法,包括:

步骤s1:加密存储卡接收来自终端的指令,当接收到选择应用指令后,根据所述选择应用指令选择电子钱包应用,执行步骤s2;当接收到来自终端的消费初始化指令后,执行步骤r1;当接收到来自终端的消费扣款指令后,执行步骤v1;

步骤s2:所述加密存储卡检测自身的电子钱包正本和电子钱包副本,当检测出电子钱包正本和电子钱包副本不匹配且根据所述电子钱包正本中的钱包正本掉电判据检测出电子钱包正本有效时,执行步骤s3;当根据所述电子钱包正本中的钱包正本掉电判据检测出电子钱包正本无效时,执行步骤s4;

步骤s3:所述加密存储卡根据所述电子钱包正本更新所述电子钱包副本,向所述终端返回选择应用成功应答,返回步骤s1;

步骤s4:所述加密存储卡根据所述电子钱包副本更新所述电子钱包正本,向所述终端返回选择应用成功应答,返回步骤s1;

步骤r1:所述加密存储卡初始化消费,从所述消费初始化指令中获取消费扣款金额,向终端返回初始化成功应答,返回步骤s1;

步骤v1:所述加密存储卡根据所述消费扣款金额计算当前电子钱包余额,根据所述当前电子钱包余额和钱包正本掉电判据更新电子钱包正本;

步骤v2:所述加密存储卡根据电子钱包正本更新电子钱包副本,向终端返回消费成功应答,返回步骤s1;

步骤s2或者为:所述加密存储卡检测自身的电子钱包正本和电子钱包副本,当根据所述电子钱包正本中的钱包正本掉电判据检测出电子钱包正本无效时,执行步骤s4;当根据所述电子钱包副本中的钱包副本掉电判据检测出电子钱包副本无效时,执行步骤s3。

本发明还提供了一种加密存储卡,包括:第一接收模块、第一应用模块、第一检测模块、第一恢复模块、第二恢复模块、第一初始化模块、第一计算模块、第一更新模块、第一返回模块和第二更新模块;

所述第一接收模块,用于接收来自终端的指令;

所述第一应用模块,根据所述第一接收模块接收到的来自所述终端的选择应用指令选择电子钱包应用;

第一检测模块,用于当所述第一应用模块选择电子钱包应用后,检测电子钱包正本和电子钱包副本;

所述第一恢复模块,用于当所述第一检测模块检测出电子钱包正本和电子钱包副本不匹配且根据所述电子钱包正本中的钱包正本掉电判据检测出电子钱包正本有效时,根据所述电子钱包正本更新所述电子钱包副本;或者用于当所述第一检测模块根据所述电子钱包副本中的钱包副本掉电判据检测出电子钱包副本无效时,根据所述电子钱包正本更新所述电子钱包副本;

所述第二恢复模块,用于当所述第一检测模块根据所述电子钱包正本中的钱包正本掉电判据检测出电子钱包正本无效时,根据所述电子钱包副本更新所述电子钱包正本;

所述第一初始化模块,用于当所述第一接收模块接收到来自所述终端的消费初始化指令后,初始化消费,从所述消费初始化指令中获取消费扣款金额;

所述第一计算模块,用于当所述第一接收模块接收到来自终端的消费扣款指令后,根据所述第一初始化模块获取到的消费扣款金额计算当前电子钱包余额;

所述第一更新模块,用于根据所述当前电子钱包余额和钱包正本掉电判据更新电子钱包正本;

所述第二更新模块,用于当所述第一更新模块更新电子钱包正本后,根据电子钱包正本更新电子钱包副本;

所述第一返回模块,用于当所述第一恢复模块根据所述电子钱包正本更新所述电子钱包副本后,向所述终端返回选择应用成功应答;当所述第二恢复模块根据所述电子钱包副本更新所述电子钱包正本后,向所述终端返回选择应用成功应答;当所述第一初始化模块初始化消费,从所述消费初始化指令中获取消费扣款金额后,向终端返回初始化成功应答;以及当所述第二更新模块根据电子钱包正本更新电子钱包副本后,向终端返回消费成功应答。

本发明的有益效果:本发明提供了一种具有恢复机制的加密存储卡及其工作方法,恢复机制集成在加密存储卡本身,能够保证即使加密存储卡在上次交易流程中出现掉电情况,加密存储卡也可以通过本发明提供的恢复机制,使本次交易流程正常进行。这样不仅缓解了终端的压力;并且即使当终端出现问题时,加密存储卡也可以继续使用,提升了加密存储卡的应用性能。

附图说明

图1为本发明实施例1提供的一种具有恢复机制的加密存储卡的工作方法的流程图;

图2为本发明实施例2提供的一种具有恢复机制的加密存储卡的工作方法的流程图;

图3为本发明实施例2提供的一种具有恢复机制的加密存储卡的工作方法中的交易流程的流程图;

图4为本发明实施例2提供的一种具有恢复机制的加密存储卡的工作方法中的恢复机制的流程图;

图5-图6为本发明实施例3提供的一种具有恢复机制的加密存储卡的工作方法的流程图;

图6-图7为本发明实施例3提供的另一种具有恢复机制的加密存储卡的工作方法的流程图;

图6-图8为本发明实施例3提供的又一种具有恢复机制的加密存储卡的工作方法的流程图;

图9为本发明实施例4提供的一种具有恢复机制的加密存储卡的模块结构图。

具体实施方法

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本实施例提供了一种具有恢复机制的加密存储卡的工作方法,如图1所示,包括:

步骤s1:加密存储卡接收来自终端的指令,当接收到选择应用指令后,根据选择应用指令选择电子钱包应用,执行步骤s2;当接收到来自终端的消费初始化指令后,执行步骤r1;当接收到来自终端的消费扣款指令后,执行步骤v1;

步骤s2:加密存储卡检测自身的电子钱包正本和电子钱包副本,当检测出电子钱包正本和电子钱包副本不匹配且根据电子钱包正本中的钱包正本掉电判据检测出电子钱包正本有效时,执行步骤s3;当根据电子钱包正本中的钱包正本掉电判据检测出电子钱包正本无效时,执行步骤s4;

步骤s3:加密存储卡根据电子钱包正本更新电子钱包副本,向终端返回选择应用成功应答,返回步骤s1;

本实施例中,根据电子钱包正本更新电子钱包副本具体为:将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区。

步骤s4:加密存储卡根据电子钱包副本更新电子钱包正本,向终端返回选择应用成功应答,返回步骤s1;

本实施例中,根据电子钱包副本更新电子钱包正本,具体为:将电子钱包副本作为电子钱包正本写入到电子钱包正本存储区。

步骤r1:加密存储卡初始化消费,从消费初始化指令中获取消费扣款金额,向终端返回初始化成功应答,返回步骤s1;

步骤v1:加密存储卡根据消费扣款金额计算当前电子钱包余额,根据当前电子钱包余额和钱包正本掉电判据更新电子钱包正本;

步骤v2:加密存储卡根据电子钱包正本更新电子钱包副本,向终端返回消费成功应答,返回步骤s1;

本实施例中,步骤s2或者为:加密存储卡检测自身的电子钱包正本和电子钱包副本,当根据电子钱包正本中的钱包正本掉电判据检测出电子钱包正本无效时,执行步骤s4;当根据电子钱包副本中的钱包副本掉电判据检测出电子钱包副本无效时,执行步骤s3。

本实施例中,钱包正本掉电判据可以为第一预设值;根据电子钱包正本中的钱包正本掉电判据检测电子钱包正本是否有效,具体为:检测电子钱包正本中的第六预设字段上的数据是否和第一预设值相匹配,如果是,则检测出电子钱包正本有效;否则,检测出电子钱包正本无效。

本实施例中,第六预设字段上的数据为电子钱包正本中的数据,其在电子钱包正本中的位置可以有多种可能,如处于电子钱包正本中的第一到第四字节或者电子钱包正本中的第二到第五字节或者电子钱包正本中的第三到第四字节等等,优选地,第六预设字段为电子钱包正本的第十三到第十六字节。

根据当前电子钱包余额和钱包掉电判据更新电子钱包正本,具体为:将第一预设值作为钱包正本掉电判据,使用钱包正本掉电判据更新电子钱包正本的第六预设字段上的数据,生成包括当前电子钱包余额和钱包正本掉电判据的电子钱包正本,将电子钱包正本写入到电子钱包正本存储区;

根据电子钱包副本中的钱包副本掉电判据检测电子钱包副本是否有效,具体为:检测电子钱包副本中的第九预设字段上的数据是否和第一预设值相匹配,如果是,则检测出电子钱包副本有效;否则,检测出电子钱包副本无效。

本实施例中,第九预设字段上的数据为电子钱包副本中的数据,其在电子钱包副本中的位置可以有多种可能,如处于电子钱包副本中的第一到第四字节或者电子钱包副本中的第二到第五字节或者电子钱包副本中的第三到第四字节等等,优选地,第九预设字段上为电子钱包副本的第十三到第十六字节。

本实施例中,步骤s2中还可以包括:当检测出电子钱包正本和电子钱包副本匹配时,向终端返回选择应用成功应答。

本实施例中,步骤s2中还可以包括:当根据电子钱包正本中的钱包正本掉电判据检测出电子钱包正本无效且根据电子钱包副本中的钱包副本掉电判据检测出电子钱包副本无效时,向终端报错。

本实施例中,当加密存储卡接收来自终端的消费扣款指令后,执行步骤v1之前还包括:

步骤n1:加密存储卡从电子钱包应用中获取累计交易次数;

步骤n2:加密存储卡更新累计交易次数;

步骤n3:加密存储卡根据累计交易次数更新计数器正本,执行步骤v1;

步骤n3具体为:加密存储卡根据累计交易次数更新计数器正本中的第一有效数据,根据第一有效数据计算计数器正本掉电判据;根据第一有效数据和计数器正本掉电判据生成计数器正本,将计数器正本写入到计数器正本存储区。

步骤v1之后,步骤v2之前还包括:加密存储卡根据计数器正本更新计数器副本。

进一步地,步骤s2中还包括:加密存储卡检测计数器正本和计数器副本:当检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,执行步骤s3;当检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,执行步骤s4;当检测出电子钱包正本和电子钱包副本匹配、计数器正本和计数器副本不匹配时,执行步骤s5;当检测出电子钱包正本和电子钱包副本匹配且计数器正本匹配和计数器副本匹配时,向终端返回选择应用成功应答;

步骤s3中还包括:加密存储卡根据计数器正本更新计数器副本;

本实施例中,根据计数器正本更新计数器副本具体为:将计数器正本作为计数器副本写入到计数器副本存储区;

步骤s4中还包括:加密存储卡根据计数器副本更新计数器正本;

本实施例中,根据计数器副本更新计数器正本具体为:将计数器副本作为计数器正本写入到计数器正本存储区。

步骤s5:加密存储卡根据计数器副本更新计数器正本,向终端返回选择应用成功应答。

本实施例中,当加密存储卡接收来自终端的消费扣款指令后,执行步骤v1之前,还可以包括;

步骤p1:加密存储卡从电子钱包应用中获取累计交易次数;

步骤p2:加密存储卡更新累计交易次数;

步骤p3:加密存储卡将第二预设值作为进程标识;根据累计交易次数和进程标识更新计数器正本,执行步骤v1;

根据电子钱包正本更新电子钱包副本后;向终端返回消费成功应答之前,还包括:加密存储卡根据计数器正本更新计数器副本。

其中,步骤p3具体为:加密存储卡根据累计交易次数和进程标识更新计数器正本中的第一有效数据,根据第一有效数据计算计数器正本掉电判据;根据第一有效数据和计数器正本掉电判据生成计数器正本,将计数器正本写入到计数器正本存储区。

进一步地,步骤s2中还包括:加密存储卡检测计数器正本和计数器副本:当检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,执行步骤s4;步骤s4中还包括:加密存储卡根据计数器副本更新计数器正本;

对应地,步骤s4具体为:加密存储卡将电子钱包副本作为电子钱包正本写入到电子钱包正本存储区;将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答;

当检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配、根据钱包正本掉电判据电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识为第二预设值后,执行步骤s6;

当检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识不为第二预设值后,执行步骤s7;或者当检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包副本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,执行步骤s7;

当检测出电子钱包正本和电子钱包副本匹配、计数器正本和计数器副本不匹配、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识为第二预设值时,执行步骤s8;或者当电子钱包正本和电子钱包副本匹配、根据计数器正本掉电判据检测出计数器正本无效、根据计数器副本掉电判据检测出计数器副本有效时,执行步骤s8;

当检测出电子钱包正本和电子钱包副本匹配、计数器正本和计数器副本不匹配、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识不为第二预设值后,执行步骤s10;

当加密存储卡检测出电子钱包正本和电子钱包副本不匹配、根据计数器正本掉电判据检测出计数器正本无效、根据计数器副本掉电判据检测出计数器副本有效时,执行步骤s9;

当根据计数器正本掉电判据检测出计数器正本有效且根据计数器副本掉电判据检测出计数器副本无效时,执行步骤s10;

步骤s6:加密存储卡更新进程标识,根据更新后的进程标识更新计数器正本,将计数器副本更新为更新后的计数器正本;根据电子钱包正本更新电子钱包副本;向终端返回选择应用成功应答;

步骤s6具体为:加密存储卡更新进程标识,根据更新后的进程标识更新计数器正本,将更新后的计数器正本写入到计数器正本存储区,将更新后的计数器正本作为计数器副本写入到计数器副本存储区;将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;向终端返回选择应用成功应答;

步骤s7:加密存储卡根据计数器正本更新计数器副本;根据电子钱包正本更新电子钱包副本;向终端返回选择应用成功应答;

步骤s7具体为:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区;将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;向终端返回选择应用成功应答;

步骤s8:加密存储卡根据计数器副本更新计数器正本,向终端返回选择应用成功应答;

步骤s8具体为:加密存储卡将计数器副本作为计数器正本写入到计数器正本存储区;向终端返回选择应用成功应答;

步骤s9:加密存储卡根据计数器副本更新计数器副本中的交易次数,根据更新后的交易次数更新计数器副本;根据更新后的计数器副本更新计数器正本;根据电子钱包正本更新电子钱包副本;向终端返回选择应用成功应答;

步骤s9具体为:加密存储卡更新计数器副本中的累计交易次数,根据更新后的累计交易次数更新计数器副本,将更新后的计数器副本写入到计数器正本存储区;将更新后的计数器副本写入到计数器副本存储区;将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;向终端返回选择应用成功应答;

步骤s10:加密存储卡根据计数器正本更新计数器副本,向终端返回选择应用成功应答。

步骤s10具体为:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区;向终端返回选择应用成功应答;

对应地,步骤v2具体包括:

步骤v21:根据电子钱包正本更新电子钱包副本;

步骤v22:将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回消费成功应答。

更进一步地,步骤s2具体包括:

步骤t1:加密存储卡检测自身的计数器正本和计数器副本是否匹配,如果是,则向终端返回选择应用成功应答;否则,执行步骤t2;

步骤t2:加密存储卡根据计数器正本掉电判据检测计数器正本是否有效,根据计数器副本掉电判据检测计数器副本是否有效,当检测出计数器正本和计数器副本均有效时,执行步骤t3;当检测出计数器正本有效,计数器副本无效时,执行步骤s10;当检测出计数器正本无效,计数器副本有效时,执行步骤t6;

步骤t3:加密存储卡检测计数器正本中的进程标识是否为第二预设值,如果是,则执行步骤t4;否则,执行步骤t7;

步骤t4:加密存储卡检测电子钱包正本和电子钱包副本是否匹配,如果是,则执行步骤s8;否则,执行步骤t5;

步骤t5:加密存储卡根据钱包正本掉电判据检测电子钱包正本是否有效,如果是,则执行步骤s6;否则,执行步骤s4;

步骤t6:加密存储卡检测电子钱包正本和电子钱包副本是否匹配,如果是,则执行步骤s8;否则,执行步骤s9;

步骤t7:加密存储卡检测电子钱包正本和电子钱包副本是否匹配,如果是,则执行步骤s10;否则,执行步骤s7。

再进一步地,步骤t2中还包括:当加密存储卡根据计数器正本掉电判据检测出计数器正本无效且根据计数器副本掉电判据检测出计数器副本无效时,向终端报错。

本实施例中,根据计数器正本掉电判据检测计数器正本是否有效,具体为:加密存储卡使用计数器正本中的第一有效数据计算第一校验值,将第一校验值作为计数器正本掉电判据,检测第一校验值是否和计数器正本中的第四预设字段上的数据相匹配,如果是,则检测出计数器正本有效,否则,检测出计数器正本无效。

根据计数器副本掉电判据检测计数器副本是否有效,具体为:加密存储卡使用计数器副本中的第二有效数据计算第二校验值,将第二校验值作为计数器副本掉电判据,检测第二校验值是否和计数器副本中的第八预设字段上的数据相匹配,如果是,则检测出计数器副本有效,否则,检测出计数器副本无效。

本实施例中,第四预设字段上的数据为计数器正本中的数据,其在计数器正本中的位置可以有多种可能,优选地,第四预设字段为计数器正本中的第十六字节。第八预设字段上的数据为计数器副本中的数据,其在计数器副本中的位置可以有多种可能,优选地,第八预设字段为计数器副本中的第十六字节。

本实施例中,接收来自终端的消费初始化指令后,还包括:判断消费初始化指令的类型,当消费初始化指令的类型为应用消费初始化指令时,步骤r1具体为:加密存储卡初始化消费,从应用消费初始化指令中获取消费扣款金额。

本实施例中,接收来自终端的消费初始化指令后,还包括:判断消费初始化指令的类型,当消费初始化指令的类型为复合应用消费初始化指令时:

步骤r1具体为:加密存储卡初始化消费,从复合应用消费初始化指令中获取消费扣款金额;

步骤s1中还包括:加密存储卡接收来自终端的更新复合应用数据缓存指令,更新复合应用数据缓存,向终端返回更新成功应答,返回步骤s1。

本实施例中,根据消费扣款金额计算当前电子钱包余额,具体为:获取电子钱包应用中的电子钱包余额,计算电子钱包余额与消费扣款金额的差值,将得到的差值作为当前电子钱包余额;

根据电子钱包正本更新电子钱包副本后,还包括将电子钱包余额更新为当前电子钱包余额。

本实施例提供了一种具有恢复机制的加密存储卡的工作方法,恢复机制集成在加密存储卡本身,能够保证即使加密存储卡在上次交易流程中出现掉电情况,加密存储卡也可以通过本发明提供的恢复机制,使本次交易流程正常进行。这样不仅缓解了终端的压力;并且即使当终端出现问题时,加密存储卡也可以继续使用,提升了加密存储卡的应用性能。

实施例2

本实施例提供了一种具有恢复机制的加密存储卡的工作方法,如图2所示,包括:

步骤101:加密存储卡接收来自终端的选择应用指令,根据选择应用指令选择电子钱包应用,从计数器正本存储区获取计数器正本;从计数器副本存储区获取计数器副本;

具体地,当加密存储卡接收到来自终端的选择应用指令后,获取选择应用指令中的第六到第十三字节上的数据,并将其作为应用类型标识,当应用类型标识为第一预设标识时,判定选择应用指令类型为电子钱包应用,加密存储卡选择电子钱包应用,从计数器正本存储区获取计数器正本;从计数器副本存储区获取计数器副本。

第一预设标识为“A000000632010105”;

例如:当加密存储卡接收到来自终端的选择应用指令“00A4040008A000000632010105”后,获取选择应用指令中的第六到十三字节上的数据“A000000632010105”,并将其作为应用类型标识,应用类型标识为第一预设标识,判定选择应用指令类型为电子钱包应用,加密存储卡选择电子钱包应用,从计数器正本存储区获取计数器正本003456020000FF10000000000000008F;从计数器副本存储区获取计数器副本003456020000FF10000000000000008F。

步骤102:加密存储卡判断计数器正本是否和计数器副本相匹配,如果是,则向终端返回选择应用成功应答,进入交易流程;否则,进入恢复机制;

具体地,加密存储卡判断计数器正本是否和计数器副本相一致,如果是,则向终端返回选择应用成功应答,进入交易流程;否则,进入恢复机制。

本实施例中,交易流程,如图3所示,包括:

步骤201:加密存储卡接收来自终端的消费初始化指令,加密存储卡初始化消费;从消费初始化指令中获取消费扣款金额;向终端返回初始化成功应答。

具体地,当加密存储卡接收来自终端的消费初始化指令后,加密存储卡初始化消费;获取消费初始化指令中的第七到第十字节上的数据,并将其作为消费扣款金额;组织初始化成功应答,向终端返回初始化成功应答。

例如,当加密存储卡接收来自终端的消费初始化指令“805001020B0100000064030201040506”后,加密存储卡初始化消费;获取消费初始化指令中的第七到第十字节上的数据“00000064”,并将其作为消费扣款金额;组织初始化成功应答,向终端返回初始化成功应答。

优选地,消费扣款金额的货币单位为分。

步骤202:加密存储卡接收来自终端的消费扣款指令,加密存储卡从电子钱包应用中获取累计交易次数;

本实施例中,累计交易次数为加密存储卡进行脱机交易的次数,初始值为0。

例如,加密存储卡接收来自终端的消费扣款指令,加密存储卡从电子钱包应用中获取累计交易次数为3455。

步骤203:加密存储卡更新累计交易次数;

具体地,加密存储卡将累计交易次数加1。

步骤204:加密存储卡从计数器正本存储区获取计数器正本,将第二预设值作为进程标识;根据累计交易次数和进程标识更新计数器正本,将更新后的计数器正本写入到计数器正本存储区。

本实施例中,计数器正本的初始值和计数器副本的初始值均为:00000000000000000000000000000000。

本实施例中,优选地,第二预设值为奇数01。

具体地,加密存储卡从计数器正本存储区获取计数器正本,将第二预设值作为进程标识;将计数器正本的第一预设字段上的数据更新为累计交易次数,将计数器正本的第二预设字段上的数据更新为第二预设值;之后,将计数器正本的第三预设字段上的数据作为第一有效数据,对第一有效数据做异或计算得到计数器正本的第四预设字段上的数据,将得到的计数器正本的第四预设字段上的数据作为第一校验值,得到更新后的包括第一有效数据和第一校验值计数器正本;将更新后的计数器正本写入到计数器正本存储区。

本实施例中,第一预设字段可以但不限于为计数器正本的第二和第三字节;第二预设字段可以但不限于为计数器正本的第四字节;第三预设字段可以但不限于为计数器正本的前15个字节;第四预设字段可以但不限于为计数器正本的第十六个字节。

例如,加密存储卡从计数器正本存储区获取计数器正本003455020000FF1000000000000000XOR,将第二预设值作为进程标识;将计数器正本的第二和第三字节上的数据更新为累计交易次数,将计数器正本的第四字节上的数据更新为第二预设值;之后,将计数器正本的前15个字节上的数据003456010000FF1000000000000000作为第一有效数据,对第一有效数据做异或计算得到计数器正本的第十六个字节上的数据,将得到的计数器正本的第十六个字节上的数据作为第一校验值,得到更新后的包括第一有效数据和第一校验值计数器正本003456010000FF1000000000000000XOR;将更新后的计数器正本写入到计数器正本存储区。

步骤205:加密存储卡从电子钱包正本存储区获取电子钱包正本,根据消费扣款金额计算当前电子钱包余额,根据当前电子钱包余额和第一预设值更新电子钱包正本,将更新后的电子钱包正本写入到电子钱包正本存储区;

具体地,加密存储卡从电子钱包正本存储区获取电子钱包正本,从电子钱包应用中获取电子钱包余额,计算电子钱包余额和消费扣款金额的差值,将电子钱包余额和消费扣款金额的差值作为当前电子钱包余额,根据当前电子钱包余额更新电子钱包正本的第五预设字段上的数据,根据第一预设值更新电子钱包正本的第六预设字段上的数据,得到更新后的包括当前电子钱包余额和第一预设值的电子钱包正本,将更新后的电子钱包正本写入到电子钱包正本存储区。

本实施例中,第五预设字段可以但不限于为电子钱包正本的第一到第十二字节,第六预设字段可以但不限于为电子钱包正本的第十三到第十六字节。

例如,加密存储卡从电子钱包存储区获取电子钱包正本502D0000AFD2FFFF502D 000000FF00FF;从电子钱包应用中获取电子钱包余额11600;计算电子钱包余额和消费扣款金额的当前差值为11500,将11500作为当前电子钱包余额,之后将电子钱包正本的第一字节到第四字节更新为当前电子钱包余额11500,第五字节到第八字节更新为当前电子钱包余额11500补码,第九字节到第十二字节更新为当前电子钱包余额11500,将第十三到第十六字节更新为第一预设值00FF00FF,得到更新后的包括当前电子钱包余额和第一预设值的电子钱包正本为EC2C000013D3FFFFEC2C000000FF00FF,将更新后的电子钱包正本EC2C000013D3FFFFEC2C000000FF00FF写入到电子钱包正本存储区。

优选地,电子钱包余额的货币单位为分。

本步骤中根据消费扣款金额计算当前电子钱包余额还可以具体为:加密存储卡从电子钱包正本中获取当前电子钱包余额,计算当前电子钱包余额和消费扣款金额的差值,将当前电子钱包余额更新为电子钱包余额和消费扣款金额的差值。

步骤206:加密存储卡更新计数器正本中的进程标识;根据更新后的进程标识更新计数器正本,将更新后的计数器正本写入到计数器正本存储区;

具体地,将计数器正本中的第二预设字段上的进程标识加1,之后将计数器正本的第三预设字段上的数据作为第一有效数据,对第一有效数据做异或计算得到计数器正本的第四预设字段上的数据,将得到的计数器正本的第四预设字段上的数据作为第一校验值,得到更新后的包括第一有效数据和第一校验值计数器正本;将更新后的计数器正本写入到计数器正本存储区。

例如:将计数器正本中的第四个字节上的进程标识加1,之后将计数器正本的前15个字节上的数据003456020000FF1000000000000000作为第一有效数据,对第一有效数据做异或计算得到计数器正本的第十六个字节上的数据即得到第一校验值,得到更新后的包括第一有效数据和第一校验值的计数器正本003456020000FF1000000000000000XOR;将更新后的计数器正本写入到计数器正本存储区。

步骤207:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;

步骤208:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区。

需说明的是,若步骤205中,根据消费扣款金额计算当前电子钱包余额具体为:加密存储卡从电子钱包应用中获取电子钱包余额,计算电子钱包余额和消费扣款金额的差值,将电子钱包余额和消费扣款金额的差值作为当前电子钱包余额,步骤208之后,步骤209之前还包括:加密存储卡根据当前电子钱包余额更新电子钱包应用中的电子钱包余额。

步骤209:加密存储卡向终端返回扣款成功应答。

本实施例中,消费初始化指令包括复合应用消费初始化指令和消费应用初始化指令。相应地,步骤201具体包括:

步骤a1:加密存储卡接收来自终端的消费初始化指令,判断消费初始化指令的类型,当消费初始化指令的类型为应用消费初始化指令时,执行步骤a2;当消费初始化指令的类型为复合应用消费初始化指令时,执行步骤a3;

具体地,加密存储卡接收来自终端的消费初始化指令,获取消费初始化指令中的第三字节上的数据,当第三字节上的数据为应用消费标识时,判定消费初始化指令的类型为应用消费初始化指令,执行步骤a2;当第三字节上的数据为复合应用消费标识时,判定消费初始化指令的类型为复合应用消费初始化指令,执行步骤a3。

本实施例中,应用消费标识为“01”;复合应用消费标识为“03”。

步骤a2:加密存储卡初始化应用消费;从应用消费初始化指令中获取消费扣款金额;向终端返回初始化成功应答,执行步骤202。

具体地,加密存储卡初始化应用消费;获取应用消费初始化指令中的第七到第十字节上的数据,并将其作为消费扣款金额;组织初始化成功应答,向终端返回初始化成功应答。

步骤a3:加密存储卡初始化复合应用消费;从复合应用消费初始化指令中获取消费扣款金额;向终端返回初始化成功应答。

具体地,加密存储卡初始化复合应用消费;获取复合应用消费初始化指令中的第七到第十字节上的数据,并将其作为消费扣款金额;组织初始化成功应答,向终端返回初始化成功应答。

本实施例中,当消费初始化指令的类型为复合应用消费初始化指令时,必要地:执行步骤a3之后,步骤202之前,还包括:加密存储卡接收来自终端的更新复合应用数据缓存指令,更新复合应用数据缓存,向终端返回更新成功应答。

其中,恢复机制如图4所示,包括:

步骤301:加密存储卡根据计数器正本、计数器副本、电子钱包正本和电子钱包副本判断加密存储卡需要执行的操作;

当加密存储卡判断出计数器正本有效且计数器副本有效且计数器正本的进程标识为第二预设值且电子钱包正本和电子钱包副本相匹配时或者当加密存储卡判断出计数器副本有效且计数器正本无效且电子钱包正本和电子钱包副本匹配时,加密存储卡执行步骤302;

当加密存储卡判断出计数器正本有效且计数器副本有效且电子钱包正本无效时,加密存储卡执行步骤303;当加密存储卡判断出计数器正本有效且计数器副本有效且计数器正本的进程标识为第二预设值且电子钱包正本和电子钱包副本不匹配且电子钱包正本有效时,加密存储卡执行步骤304;

当加密存储卡判断出计数器副本有效且计数器正本无效且电子钱包正本和电子钱包副本不匹配时,加密存储卡执行步骤305;

当加密存储卡判断出计数器正本有效且计数器副本有效且计数器正本的进程标识不为第二预设值且电子钱包正本和电子钱包副本不匹配时或当加密存储卡判断出计数器正本有效且计数器副本有效且电子钱包副本无效时,加密存储卡执行步骤306;

当加密存储卡判断出计数器正本有效且计数器副本有效且计数器正本的进程标识不为第二预设值且电子钱包正本和电子钱包副本匹配时或者当加密存储卡判断出计数器正本有效且计数器副本无效时,加密存储卡执行步骤307;

步骤302:加密存储卡将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答后,进行本次交易流程;

步骤303:加密存储卡将电子钱包副本作为电子钱包正本写入到电子钱包正本存储区;将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答后,进行本次交易流程;

步骤304:加密存储卡更新计数器正本的进程标识;根据更新后的进程标识更新计数器正本;将更新后的计数器正本写入到计数器正本存储区,将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行本次交易流程;

步骤305:加密存储卡更新计数器副本中的累计交易次数;将更新后的计数器副本写入计数器正本存储区;将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区,将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行本次交易流程;

步骤306:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;将计数器正本作为计数器副本写入到计数器副本存储区;向终端返回选择应用成功应答,进行本次交易流程;

步骤307:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行本次交易流程。

本实施例中,钱包正本掉电判据可以为第一预设值,检测电子钱包正本是否有效,具体为:检测电子钱包正本中的第六预设字段上的数据是否和第一预设值相匹配,如果是,则检测出电子钱包正本有效;否则,检测出电子钱包正本无效。

根据当前电子钱包余额和钱包掉电判据更新电子钱包正本,具体为:将第一预设值作为钱包正本掉电判据,根据当前电子钱包余额和钱包正本掉电判据生成电子钱包正本,将电子钱包正本写入到电子钱包正本存储区;

本实施例中,钱包副本掉电判据可以为第一预设值,检测电子钱包副本是否有效,具体为:检测电子钱包副本中的第九预设字段上的数据是否和第一预设值相匹配,如果是,则检测出电子钱包副本有效;否则,检测出电子钱包副本无效。

本实施例中,第九预设字段可以但不限于为电子钱包副本中的第十三到第十六字节。

本实施例中,检测计数器正本是否有效,具体为:加密存储卡使用计数器正本中的第一有效数据计算第一校验值,将第一校验值作为计数器正本掉电判据,检测第一校验值是否和计数器正本中的第四预设字段上的数据相匹配,如果是,则检测出计数器正本有效,否则,检测出计数器正本无效;

更加详细地,加密存储将计数器正本中的第三预设字段上的数据作为第一有效数据,使用第一有效数据计算第一校验值,将第一校验值作为计数器正本掉电判据,检测第一校验值是否和计数器正本中的第四预设字段上的数据相匹配,如果是,则检测出计数器正本有效,否则,检测出计数器正本无效。

检测计数器副本是否有效,具体为:加密存储卡使用计数器副本中的第二有效数据计算第二校验值,将第二校验值作为计数器副本掉电判据,检测第二校验值是否和计数器副本中的第八预设字段上的数据相匹配,如果是,则检测出计数器副本有效,否则,检测出计数器副本无效。

更加详细地,加密存储卡将计数器副本中的第七预设字段上的数据作为第二有效数据,使用第二有效数据计算第二校验值,将第二校验值作为计数器副本掉电判据,检测第二校验值是否和计数器副本中的第八预设字段上的数据相匹配,如果是,则检测出计数器副本有效,否则,检测出计数器副本无效。

本实施例中,第八预设字段可以但不限于为计数器副本中的第十六字节,第七预设字段可以但不限于为计数器副本中的前十五字节。

本实施例中,计数器正本中包括电子钱包交易次数和进程标识;计数器副本为计数器正本的备份;电子钱包正本中包括电子钱包余额;电子钱包副本为电子钱包正本的备份;在一次完整的交易流程之后,计数器正本和计数器副本应保持一致;电子钱包正本和电子钱包副本应保持一致;若在上次交易流程中加密存储卡掉电,则有可能出现计数器正本和计数器副本不一致;电子钱包正本和电子钱包副本不一致的情况,或者可能出现计数器正本和计数器副本不一致;电子钱包正本和电子钱包副本一致的情况;无论出现上述哪种情况,均可以通过本发明提供的方法使加密存储卡在进行本次交易流程之前,将计数器正本和计数器副本保持一致,电子钱包正本和电子钱包副本保持一致,从而使加密存储卡在进行本次交易流程后可以正常工作。

为进一步的阐述本实施例提供的一种具有恢复机制的加密存储卡的工作方法,本实施例中简单解释了一下加密存储卡的恢复机制是如何在当加密存储卡在上次交易流程中出现了掉电的情况下,使加密存储卡在本次交易流程开始之前恢复正常的:

当加密存储卡进行上次交易流程之后,当加密卡再次接收来自终端的选择应用指令后,继续执行步骤101,当执行到步骤102时,判断计数器正本和计数器副本是否一致,若一致,则表示加密存储卡在上次交易流程中并未发生掉电情况或者加密存储卡在步骤201至步骤204中的将更新的计数器正本写入到计数器正本存储区之前的某个阶段发生了掉电,加密存储卡则直接进行本次交易流程;当判断计数器正本和计数器副本是不一致,则进入恢复机制:

当加密存储卡判断出计数器正本有效且计数器副本有效且计数器正本的进程标识为第二预设值且电子钱包正本和电子钱包副本相匹配使时,加密存储卡判断出上次交易流程中加密存储卡在执行到步骤204时,在将更新后的计数器正本写入到计数器正本存储区的过程中发生了掉电,执行步骤302;

当加密存储卡判断出计数器副本有效且计数器正本无效且电子钱包正本和电子钱包副本匹配时,加密存储卡判断出加密存储卡在上次交易流程中执行完步骤204中的将更新后的计数器正本写入到计数器正本存储区之后,在将更新后的电子钱包正本写入到电子钱包正本存储区之前发生了掉电,执行步骤302;

当加密存储卡判断出计数器正本有效且计数器副本有效且电子钱包正本无效时,加密存储卡判断出加密存储卡在上次交易流程中在将更新后的电子钱包正本写入到电子钱包正本存储区的过程中发生了掉电,执行步骤303;

当加密存储卡判断出计数器正本有效且计数器副本有效且计数器正本的进程标识为第二预设值且电子钱包正本和电子钱包副本不匹配且电子钱包正本有效时,加密存储卡判断出加密存储卡在上次交易流程中将更新后的电子钱包正本写入到电子钱包正本存储区之后,在步骤206中的将更新后的计数器正本写入到计数器正本存储区之前发生了掉电,执行步骤304;

当加密存储卡判断出计数器副本有效且计数器正本无效且电子钱包正本和电子钱包副本不匹配时,加密存储卡判断出加密存储卡在执行到步骤206时,在将更新后的计数器正本写入到计数器正本存储区的过程中发生了掉电,则执行步骤305;

当加密存储卡判断出计数器正本有效且计数器副本有效且计数器正本的进程标识为不为第二预设值且电子钱包正本和电子钱包副本不匹配时,加密存储卡判断出加密存储卡在上次交易流程中执行完步骤206中的将更新后的计数器正本写入到计数器正本存储区之后,在将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区之前;或者在将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区的过程中发生了掉电,执行步骤306;

当加密存储卡判断出计数器正本有效且计数器副本有效且计数器正本的进程标识为不为第二预设值且电子钱包正本和电子钱包副本匹配时,加密存储卡判断出上次交易流程中加密存储卡在将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区之后,将计数器正本作为计数器副本写入到计数器副本存储区之前发生了掉电,执行步骤307;

当加密存储卡判断出计数器正本有效且计数器副本无效时,加密存储卡判断出上次交易流程中加密存储卡在将计数器正本作为计数器副本写入到计数器副本存储区中的过程中发生了掉电,执行步骤307。

本实施例中,优选地,步骤303具体包括:步骤3031和步骤3032;

步骤3031:加密存储卡将电子钱包副本作为电子钱包正本写入到电子钱包正本存储区,执行步骤3032;

步骤3032:加密存储卡将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答后,进行本次交易流程。

本实施例中,步骤303中加密存储卡执行步骤3031之后,再执行步骤3032可以保证即使加密存储卡在执行步骤303中的恢复操作时发生掉电,当再次执行实施例中提供的具有恢复机制的加密存储卡的工作方法时,也可以通过本实施例中提供的恢复机制进行恢复。

优选地,步骤304具体包括:步骤3041、步骤3042和步骤3043;

步骤3041:加密存储卡更新计数器正本的进程标识;根据更新后的进程标识更新计数器正本;将更新后的计数器正本写入到计数器正本存储区,执行步骤3042;

步骤3042:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区,执行步骤3043;

步骤3043:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行本次交易流程。

本实施例中,步骤304中加密存储卡执行步骤3041之后,再执行步骤3042,之后再执行步骤3043可以保证即使加密存储卡在执行步骤304中的恢复操作时发生掉电,当再次执行实施例中提供的具有恢复机制的加密存储卡的工作方法时,也可以通过本实施例中提供的恢复机制进行恢复。

优选地,步骤305具体包括:步骤3051、步骤3052和步骤3053;

步骤3051:加密存储卡更新计数器副本中的累计交易次数;将更新后的计数器副本写入计数器正本存储区,执行步骤3052;

步骤3052:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区,执行步骤3053;

步骤3053:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行本次交易流程。

本实施例中,步骤305中加密存储卡执行步骤3051之后,再执行步骤3052,之后再执行步骤3053可以保证即使加密存储卡在执行步骤305中的恢复操作时发生掉电,当再次执行实施例中提供的具有恢复机制的加密存储卡的工作方法时,也可以通过本实施例中提供的恢复机制进行恢复。

优选地,步骤306具体包括:步骤3061和步骤3062;

步骤3061:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区,执行步骤3062;

步骤3062:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区;向终端返回选择应用成功应答,进行本次交易流程。

本实施例中,步骤306中加密存储卡执行步骤3061之后,再执行步骤3062可以保证即使加密存储卡在执行步骤306中的恢复操作时发生掉电,当再次执行实施例中提供的具有恢复机制的加密存储卡的工作方法时,也可以通过本实施例中提供的恢复机制进行恢复。

实施例3

本实施例提供了具有恢复机制的加密存储卡的工作方法的流程图,如图5-图6所示或者图6-图7所示或者图7-图8所示,包括:

步骤401:加密存储卡接收来自终端的选择应用指令,从选择应用指令中获取选择应用指令类型,当选择应用指令类型为电子钱包应用时,加密存储卡选择电子钱包应用,从计数器正本存储区获取计数器正本;从计数器副本存储区获取计数器副本;

具体地,当加密存储卡接收到来自终端的选择应用指令后,获取选择应用指令中的第六到第十三字节上的数据,并将其作为应用类型标识,当应用类型标识为第一预设标识时,判定选择应用指令类型为电子钱包应用,加密存储卡选择电子钱包应用,从计数器正本存储区获取计数器正本;从计数器副本存储区获取计数器副本。

第一预设标识为“A000000632010105”;

例如:当加密存储卡接收到来自终端的选择应用指令“00A4040008A000000632010105”后,获取选择应用指令中的第六到十三字节上的数据“A000000632010105”,并将其作为应用类型标识,应用类型标识为第一预设标识,判定选择应用指令类型为电子钱包应用,加密存储卡选择电子钱包应用,从计数器正本存储区获取计数器正本;从计数器副本存储区获取计数器副本;获取到计数器正本为003456020000FF10000000000000008F和计数器副本为003456020000FF10000000000000008F。

步骤402:加密存储卡判断计数器正本是否和计数器副本相匹配,如果是,则向终端返回选择应用成功应答,进入交易流程;否则,执行步骤403或步骤601或步骤701;

具体地,加密存储卡判断计数器正本是否和计数器副本相一致,如果是,则向终端返回选择应用成功应答,进入交易流程;否则,执行步骤403或步骤601或步骤701。

步骤403:加密存储卡分别判断计数器正本和计数器副本是否有效;当计数器正本和副本均有效时,执行步骤404;当仅计数器正本有效时,则执行步骤416;当仅计数器副本有效时,则执行步骤417;当计数器正本和计数器副本均无效时,向终端返回失败应答。

具体地,加密存储卡获取计数器正本中的前15个字节上的数据,将计数器正本的前15个字节上的数据做异或计算,得到第一异或值,判断第一异或值是否和计数器正本的第16字节上的数据相匹配,如果是,则判定计数器正本有效,否则,判定计数器正本无效;获取计数器副本中的前15个字节上的数据,将计数器副本的前15个字节上的数据做异或计算,得到第二异或值,判断第二异或值是否和计数器副本的第16字节上的数据相匹配,如果是,则判定计数器副本有效,否则,判定计数器副本无效;当计数器正本和副本均有效时,执行步骤404;当仅计数器正本有效时,则执行步骤416;当仅计数器副本有效时,则执行步骤417;当计数器正本和计数器副本均无效时,向终端返回失败应答。

例如:加密存储卡获取计数器正本中的前15个字节上的数据“003456020000FF1000000000000000”,将计数器正本的前15个字节上的数据做异或计算,得到第一异或值“8F”,判断第一异或值和计数器正本的第16字节上的数据“8F”相匹配,则判定计数器正本有效;获取计数器副本中的前15个字节上的数据“003456020000FF1000000000000000”,将计数器副本的前15个字节上的数据做异或计算,得到第二异或值“8F”,判断第二异或值和计数器副本的第16字节上的数据相匹配“8F”,则判定计数器副本有效,执行步骤404。

步骤404:加密存储卡获取计数器正本的进程标识;

具体地,加密存储卡获取计数器正本的第四字节上的数据,并将其作为计数器正本的进程标识。

例如:加密存储卡获取计数器正本的第四字节上的数据“02”,并将其作为计数器正本的进程标识。

步骤405:加密存储卡判断计数器正本的进程标识为奇数或偶数;当计数器正本的进程标识为奇数时,执行步骤406;当计数器正本的进程标识为偶数时,执行步骤413;

步骤406:加密存储卡从钱包正本存储区获取电子钱包正本;从钱包副本存储区获取电子钱包副本;

例如,加密存储卡从钱包正本存储区获取到的电子钱包正本为EC2C000013D3FFFFEC2C000000FF00FF;加密存储卡从钱包副本存储区获取到的电子钱包副本为EC2C000013D3FFFFEC2C000000FF00FF。

步骤407:加密存储卡判断电子钱包正本和电子钱包副本是否相匹配,如果是,则执行步骤408;否则,执行步骤409;

具体地,判断电子钱包正本和电子钱包副本是否相一致,如果是,则执行步骤408;否则,执行步骤409。

步骤408:加密存储卡将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答,进入交易流程;

步骤409:加密存储卡判断电子钱包正本是否有效,如果是,则执行步骤410;否则,执行步骤412;

具体地,加密存储卡获取电子钱包正本的最后四个字节上的数据,判断获取到的数据是否和第一预设值相匹配,如果是,则判定电子钱包正本有效,则执行步骤410;否则,判定电子钱包正本无效,执行步骤412。

本实施例中,优选地,第一预设值为“00FF00FF”。

例如,加密存储卡获取电子钱包正本的最后四个字节上的数据“00FF00FF”,判断获取到的数据和第一预设值“00FF00FF”相匹配,则判定电子钱包正本有效,则执行步骤410。

步骤410:加密存储卡更新计数器正本的进程标识;根据更新后的进程标识更新计数器正本;将更新后的计数器正本写入到计数器正本存储区;

具体地,加密存储卡将计数器正本的第四字节上的数据加1,之后将计数器正本的前15个字节上的数据做异或计算得到计数器正本的第十六个字节上的数据,得到更新后的计数器正本;将更新后的计数器正本写入到计数器正本存储区。

步骤411:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进入交易流程。

步骤412:加密存储卡将电子钱包副本作为电子钱包正本写入到电子钱包正本存储区;将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答,进入交易流程。

步骤413:加密存储卡判断电子钱包正本和电子钱包副本是否相匹配,如果是,则执行步骤415;否则,执行步骤414;

具体地,加密存储卡判断电子钱包正本和电子钱包副本是否相一致,如果是,则执行步骤415;否则,执行步骤414。

步骤414:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;

步骤415:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进入交易流程。

步骤416:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行交易流程。

步骤417:加密存储卡判断电子钱包正本和电子钱包副本是否相匹配,如果是,则执行步骤418;否则,执行步骤419;

具体地,加密存储卡判断电子钱包正本和电子钱包副本是否相一致,如果是,则执行步骤418;否则,执行步骤419。

步骤418:加密存储卡将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答,进入交易流程;

步骤419:加密存储卡从计数器副本存储区获取计数器副本,更新计数器副本中的累计交易次数;

具体地,加密存储卡获取计数器副本中的数据并将其作为第一数据;获取第一数据的第二字节和第三字节上的数据,并将其作为第一数据的累计交易次数;将累计交易次数加1,之后将第一数据的前15个字节上的数据做异或计算得到第一数据的第十六个字节上的数据,得到更新后的第一数据。

例如,加密存储卡获取计数器副本中的数据“003456020000FF10000000000000008F”并将其作为第一数据;获取第一数据的第二字节和第三字节上的数据“3456”,并将其作为第一数据的累计交易次数;将累计交易次数加1,之后将第一数据的前15个字节上的数据做异或计算得到第一数据的第十六个字节上的数据,得到更新后的第一数据为“003457020000FF1000000000000000XOR”。

步骤420:加密存储卡将更新后的计数器副本写入计数器正本存储区;

步骤421:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区,将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进入交易流程。

本实施例中,交易流程,如图5所示,包括:

步骤501:加密存储卡接收来自终端的消费初始化指令,加密存储卡初始化消费;从消费初始化指令中获取消费扣款金额;向终端返回初始化成功应答。

具体地,当加密存储卡接收来自终端的消费初始化指令后,加密存储卡初始化消费;获取消费初始化指令中的第七到第十字节上的数据,并将其作为消费扣款金额;组织初始化成功应答,向终端返回初始化成功应答。

例如,当加密存储卡接收来自终端的消费初始化指令“805001020B0100000064030201040506”后,加密存储卡初始化消费;获取消费初始化指令中的第七到第十字节上的数据“00000064”,并将其作为消费扣款金额;组织初始化成功应答,向终端返回初始化成功应答。

优选地,消费扣款金额的货币单位为分。

步骤502:加密存储卡接收来自终端的消费扣款指令,加密存储卡从电子钱包应用中获取累计交易次数;

本实施例中,累计交易次数为加密存储卡进行脱机交易的次数,初始值为0。

例如,加密存储卡接收来自终端的消费扣款指令,加密存储卡从电子钱包应用中获取累计交易次数为3455。

步骤503:加密存储卡更新累计交易次数;

具体地,加密存储卡将累计交易次数加1。

步骤504:加密存储卡从计数器正本存储区获取计数器正本,将第二预设值作为进程标识;根据累计交易次数和进程标识更新计数器正本,将更新后的计数器正本写入到计数器正本存储区。

本实施例中,计数器正本的初始值和计数器副本的初始值均为:00000000000000000000000000000000。

本实施例中,优选地,第二预设值为奇数01。

具体地,加密存储卡从计数器正本存储区获取计数器正本,将第二预设值作为进程标识;将计数器正本的第一预设字段上的数据更新为累计交易次数,将计数器正本的第二预设字段上的数据更新为第二预设值;之后,将计数器正本的第三预设字段上的数据作为第一有效数据,对第一有效数据做异或计算得到计数器正本的第四预设字段上的数据,将得到的计数器正本的第四预设字段上的数据作为第一校验值,得到更新后的包括第一有效数据和第一校验值计数器正本;将更新后的计数器正本写入到计数器正本存储区。

本实施例中,第一预设字段可以但不限于为计数器正本的第二和第三字节;第二预设字段可以但不限于为计数器正本的第四字节;第三预设字段可以但不限于为计数器正本的前15个字节;第四预设字段可以但不限于为计数器正本的第十六个字节。

例如,加密存储卡从计数器正本存储区获取计数器正本003455020000FF1000000000000000XOR,将第二预设值作为进程标识;将计数器正本的第二和第三字节上的数据更新为累计交易次数,将计数器正本的第四字节上的数据更新为第二预设值;之后,将计数器正本的前15个字节上的数据003456010000FF1000000000000000作为第一有效数据,对第一有效数据做异或计算得到计数器正本的第十六个字节上的数据,将得到的计数器正本的第十六个字节上的数据作为第一校验值,得到更新后的包括第一有效数据和第一校验值计数器正本003456010000FF1000000000000000XOR;将更新后的计数器正本写入到计数器正本存储区。

步骤505:加密存储卡从电子钱包正本存储区获取电子钱包正本,根据消费扣款金额计算当前电子钱包余额,根据当前电子钱包余额和第一预设值更新电子钱包正本,将更新后的电子钱包正本写入到电子钱包正本存储区;

具体地,加密存储卡从电子钱包正本存储区获取电子钱包正本,从电子钱包应用中获取电子钱包余额,计算电子钱包余额和消费扣款金额的差值,将电子钱包余额和消费扣款金额的差值作为当前电子钱包余额,根据当前电子钱包余额更新电子钱包正本的第五预设字段上的数据,根据第一预设值更新电子钱包正本的第六预设字段上的数据,得到更新后的包括当前电子钱包余额和第一预设值的电子钱包正本,将更新后的电子钱包正本写入到电子钱包正本存储区。

本实施例中,第五预设字段可以但不限于为电子钱包正本的第一到第十二字节,第六预设字段可以但不限于为电子钱包正本的第十三到第十六字节。

例如,加密存储卡从电子钱包存储区获取电子钱包正本502D0000AFD2FFFF502D 000000FF00FF;从电子钱包应用中获取电子钱包余额11600;计算电子钱包余额和消费扣款金额的当前差值为11500,将11500作为当前电子钱包余额,之后将电子钱包正本的第一字节到第四字节更新为当前电子钱包余额11500,第五字节到第八字节更新为当前电子钱包余额11500补码,第九字节到第十二字节更新为当前电子钱包余额11500,将第十三到第十六字节更新为第一预设值00FF00FF,得到更新后的包括当前电子钱包余额和第一预设值的电子钱包正本为EC2C000013D3FFFFEC2C000000FF00FF,将更新后的电子钱包正本EC2C000013D3FFFFEC2C000000FF00FF写入到电子钱包正本存储区。

优选地,电子钱包余额的货币单位为分。

本步骤中根据消费扣款金额计算当前电子钱包余额还可以具体为:加密存储卡从电子钱包正本中获取当前电子钱包余额,计算当前电子钱包余额和消费扣款金额的差值,将当前电子钱包余额更新为电子钱包余额和消费扣款金额的差值。

步骤506:加密存储卡更新计数器正本中的进程标识;根据更新后的进程标识更新计数器正本,将更新后的计数器正本写入到计数器正本存储区;

具体地,将计数器正本中的第二预设字段上的进程标识加1,之后将计数器正本的第三预设字段上的数据作为第一有效数据,对第一有效数据做异或计算得到计数器正本的第四预设字段上的数据,将得到的计数器正本的第四预设字段上的数据作为第一校验值,得到更新后的包括第一有效数据和第一校验值计数器正本;将更新后的计数器正本写入到计数器正本存储区。

例如:将计数器正本中的第四个字节上的进程标识加1,之后将计数器正本的前15个字节上的数据003456020000FF1000000000000000作为第一有效数据,对第一有效数据做异或计算得到计数器正本的第十六个字节上的数据即得到第一校验值,得到更新后的包括第一有效数据和第一校验值的计数器正本003456020000FF1000000000000000XOR;将更新后的计数器正本写入到计数器正本存储区。

步骤507:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;

步骤508:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区。

步骤509:加密存储卡向终端返回扣款成功应答。

需说明的是,若步骤505中,根据消费扣款金额计算当前电子钱包余额具体为:加密存储卡从电子钱包应用中获取电子钱包余额,计算电子钱包余额和消费扣款金额的差值,将电子钱包余额和消费扣款金额的差值作为当前电子钱包余额,步骤508之后,步骤509之前还包括:加密存储卡根据当前电子钱包余额更新电子钱包应用中的电子钱包余额。

本实施例中,消费初始化指令包括复合应用消费初始化指令和消费应用初始化指令。相应地,步骤501具体包括:

步骤a1:加密存储卡接收来自终端的消费初始化指令,判断消费初始化指令的类型,当消费初始化指令的类型为应用消费初始化指令时,执行步骤a2;当消费初始化指令的类型为复合应用消费初始化指令时,执行步骤a3;

具体地,加密存储卡接收来自终端的消费初始化指令,获取消费初始化指令中的第三字节上的数据,当第三字节上的数据为应用消费标识时,判定消费初始化指令的类型为应用消费初始化指令,执行步骤a2;当第三字节上的数据为复合应用消费标识时,判定消费初始化指令的类型为复合应用消费初始化指令,执行步骤a3。

本实施例中,应用消费标识为“01”;复合应用消费标识为“03”。

步骤a2:加密存储卡初始化应用消费;从应用消费初始化指令中获取消费扣款金额;向终端返回初始化成功应答,执行步骤502。

具体地,加密存储卡初始化应用消费;获取应用消费初始化指令中的第七到第十字节上的数据,并将其作为消费扣款金额;组织初始化成功应答,向终端返回初始化成功应答。

步骤a3:加密存储卡初始化复合应用消费;从复合应用消费初始化指令中获取消费扣款金额;向终端返回初始化成功应答。

具体地,加密存储卡初始化复合应用消费;获取复合应用消费初始化指令中的第七到第十字节上的数据,并将其作为消费扣款金额;组织初始化成功应答,向终端返回初始化成功应答。

本实施例中,当消费初始化指令的类型为复合应用消费初始化指令时,必要地:执行步骤a3之后,步骤502之前,还包括:加密存储卡接收来自终端的更新复合应用数据缓存指令,更新复合应用数据缓存,向终端返回更新成功应答。

为进一步的阐述本实施例提供的一种具有恢复机制的加密存储卡的工作方法,本实施例中简单解释了一下加密存储卡的恢复机制是如何在当加密存储卡在上次交易流程中出现了掉电的情况下,使加密存储卡在本次交易流程开始之前恢复正常的:

当加密存储卡进行上次交易流程之后,当加密卡再次接收来自终端的选择应用指令后,继续执行步骤401,当执行到步骤402时,判断计数器正本和计数器副本是否一致,若一致,则表示加密存储卡在上次交易流程中并未发生掉电情况或者加密存储卡在步骤501至步骤504中的将更新的计数器正本写入到计数器正本存储区之前的某个阶段发生了掉电,加密存储卡则直接进行本次交易流程。当步骤402中,判断计数器正本和计数器副本是不一致时,加密存储卡继续执行步骤403;若步骤403中判断出仅计数器正本有效时,则加密存储卡判断出上次交易流程中加密存储卡在执行到步骤508时,在将计数器正本作为计数器副本写入到计数器副本存储区的过程中发生了掉电,则将计数器正本作为计数器副本写入到计数器副本存储区,之后进行本次交易流程;若步骤403中判断出计数器正本和计数器副本均有效,则加密存储卡判定上次交易流程中加密存储卡在执行完步骤504中的将更新后的计数器正本写入到计数器正本存储区之后,步骤506中的将更新后的计数器正本写入到计数器正本存储区之前的某个阶段发生了掉电或者是在执行完步骤506中的将更新后的计数器正本写入到计数器正本存储区之后,在将计数器正本作为计数器副本写入到计数器副本存储区之前的某个阶段发生了掉电,加密存储卡继续执行步骤404和步骤405;当步骤405中加密存储卡判断出计数器正本的进程标识为奇数时,则判定加密存储卡判定上次交易流程中加密存储卡在执行完步骤504中的将更新后的计数器正本写入到计数器正本存储区之后,步骤506中的将更新后的计数器正本写入到计数器正本存储区之前的某个阶段发生了掉电,继续执行步骤406和步骤407;当步骤407中判断出电子钱包正本和电子钱包副本相匹配后,加密存储卡判定上次交易流程中加密存储卡在执行完步骤504中的将更新后的计数器正本写入到计数器正本存储区之后,在将更新后的电子钱包正本写入到电子钱包正本存储区之前发生了掉电,则加密存储卡判定上次交易流程并未实际进行扣款,则将计数器副本作为计数器正本写入到计数器正本存储区后,进行本次交易流程。当步骤407中判断出电子钱包正本和电子钱包副本不匹配后,加密存储卡继续执行步骤409;若步骤409中判断出电子钱包正本有效,则加密存储卡判定上次交易流程中加密存储卡在将更新后的电子钱包正本写入到电子钱包正本存储区之后,步骤506中的将更新后的计数器正本写入到计数器正本存储区之前发生了掉电,则执行步骤410和411后,进行本次交易流程;若步骤409中判断出电子钱包正本无效,则加密存储卡判定上次交易流程中加密存储卡在将更新后的电子钱包正本写入到电子钱包正本存储区的过程中发生了掉电,则加密存储卡判定上次交易流程并未实际进行扣款,则执行步骤412后,进行本次交易流程。当步骤405中判断出计数器正本的进程标识为偶数时,则判定加密存储卡判定上次交易流程中加密存储卡在执行完步骤506中的将更新后的计数器正本写入到计数器正本存储区之后,在将计数器正本作为计数器副本写入到计数器副本存储区之前的某个阶段发生了掉电,继续执行步骤413;当步骤413中判断出电子钱包正本和电子钱包副本相匹配时,则加密存储卡判定上次交易流程中加密存储卡在将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区之后,将计数器正本作为计数器副本写入到计数器副本存储区之前发生了掉电,继续执行步骤415之后,进行本次交易流程。当步骤413中判断出电子钱包正本和电子钱包副本不匹配时,加密存储卡判定上次交易流程中加密存储卡在执行完步骤506中的将更新后的计数器正本写入到计数器正本存储区之后,在将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区之前;或者在将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区的过程中发生了掉电,继续执行步骤414和步骤415之后,进行本次交易流程。当步骤403中判断出仅计数器副本有效时,则加密存储卡判定上次交易流程中加密存储卡在执行到步骤504时,在将更新后的计数器正本写入到计数器正本存储区的过程中发生了掉电,或者在执行到步骤506时,在将更新后的计数器正本写入到计数器正本存储区的过程中发生了掉电,继续执行步骤417;当步骤417中判断出电子钱包正本和电子钱包副本相匹配时,则加密存储卡判定上次交易流程中加密存储卡在执行到步骤504时,在将更新后的计数器正本写入到计数器正本存储区的过程中发生了掉电,则加密存储卡判定上次交易流程并未实际进行扣款,则将计数器副本作为计数器正本写入到计数器正本存储区后,进行本次交易流程。当步骤417中判断出电子钱包正本和电子钱包副本不匹配时,则加密存储卡判定上次交易流程中加密存储卡在执行到步骤506时,在将更新后的计数器正本写入到计数器正本存储区的过程中发生了掉电,则执行步骤419、步骤420和步骤421之后,进行本次交易流程。

步骤601:加密存储卡分别判断计数器正本和计数器副本是否有效;当计数器正本和副本均有效时,执行步骤602;当仅计数器正本有效时,则执行步骤615;当仅计数器副本有效时,则执行步骤616;当计数器正本和计数器副本均无效时,向终端返回失败应答。

步骤602:加密存储卡从电子钱包正本存储区获取电子钱包正本;从电子钱包副本存储区获取电子钱包副本;

步骤603:加密存储卡判断电子钱包正本和电子钱包副本是否相匹配,如果是,则执行步骤604;否则,执行步骤607;

步骤604:加密存储卡获取计数器正本的进程标识;

步骤605:加密存储卡判断计数器正本的进程标识为奇数或偶数;当计数器正本的进程标识为奇数时,执行步骤606;当计数器正本的进程标识为偶数时,执行步骤610;

步骤606:加密存储卡将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答,进入交易流程;

步骤607:加密存储卡获取计数器正本的进程标识;

步骤608:加密存储卡判断计数器正本的进程标识为奇数或偶数;当计数器正本的进程标识为奇数时,执行步骤611;当计数器正本的进程标识为偶数时,执行步骤609;

步骤609:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;

步骤610:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区;向终端返回选择应用成功应答,进入交易流程。

步骤611:加密存储卡判断电子钱包正本是否有效,如果是,则执行步骤612;否则,执行步骤614;

步骤612:加密存储卡更新计数器正本的进程标识;根据更新后的进程标识更新计数器正本;将更新后的计数器正本写入到计数器正本存储区;

步骤613:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进入交易流程;

步骤614:加密存储卡将电子钱包副本作为电子钱包正本写入到电子钱包正本存储区;将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答,进入交易流程;

步骤615:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行交易流程;

步骤616:加密存储卡判断电子钱包正本和电子钱包副本是否相匹配,如果是,则执行步骤617;否则,执行步骤618;

步骤617:加密存储卡将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答,进入交易流程;

步骤618:加密存储卡从计数器副本存储区获取计数器副本,更新计数器副本中的累计交易次数;

步骤619:加密存储卡将更新后的计数器副本写入计数器正本存储区;

步骤620:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区,将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行交易流程。

步骤701:加密存储卡从电子钱包正本存储区获取电子钱包正本;判断电子钱包正本是否有效;如果是,则执行步骤702;否则,执行步骤721;

步骤702:加密存储卡判断计数器正本和计数器正本是否有效,当计数器正本和副本均有效时,执行步骤703;当计数器正本和计数器副本均无效时,执行步骤714;当仅计数器正本有效时,执行步骤715;当仅计数器副本有效时,执行步骤716

步骤703:加密存储卡从电子钱包副本存储区获取电子钱包副本;

步骤704:加密存储卡判断电子钱包正本和电子钱包副本是否相匹配,如果是,则执行步骤705;否则,执行步骤708;

步骤705:加密存储卡获取计数器正本的进程标识;

步骤706:加密存储卡判断计数器正本的进程标识为奇数或偶数;当计数器正本的进程标识为奇数时,执行步骤707;当计数器正本的进程标识为偶数时,执行步骤711;

步骤707:加密存储卡将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答,进入交易流程;

步骤708:加密存储卡获取计数器正本的进程标识;

步骤709:加密存储卡判断计数器正本的进程标识为奇数或偶数;当计数器正本的进程标识为奇数时,执行步骤712;当计数器正本的进程标识为偶数时,执行步骤710;

步骤710:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;

步骤711:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区向终端返回选择应用成功应答,进入交易流程;

步骤712:加密存储卡更新计数器正本的进程标识;

步骤713:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进入交易流程;

步骤714:加密存储卡向终端返回失败应答;

步骤715:加密存储卡将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行交易流程;

步骤716:加密存储卡判断电子钱包正本和电子钱包副本是否相匹配,如果是,则执行步骤717;否则,执行步骤718;

步骤717:加密存储卡将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答,进入交易流程;

步骤718:加密存储卡更新计数器副本中的累计交易次数;

步骤719:加密存储卡将更新后的计数器副本写入计数器正本存储区;

步骤720:加密存储卡将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区,将计数器正本作为计数器副本写入到计数器副本存储区,向终端返回选择应用成功应答,进行交易流程;

步骤721:加密存储卡判断计数器正本和计数器正本是否均有效,如果是,则执行步骤722;否则,返回步骤714。

步骤722:加密存储卡将电子钱包副本作为电子钱包正本写入到电子钱包正本存储区,将计数器副本作为计数器正本写入到计数器正本存储区,向终端返回选择应用成功应答,进行交易流程。

本实施例中,计数器正本中包括电子钱包交易次数和进程标识;计数器副本为计数器正本的备份;电子钱包正本中包括电子钱包余额;电子钱包副本为电子钱包正本的备份;在一次完整的交易流程之后,计数器正本和计数器副本应保持一致;电子钱包正本和电子钱包副本应保持一致;若在上次交易流程中加密存储卡掉电,则有可能出现计数器正本和计数器副本不一致;电子钱包正本和电子钱包副本不一致的情况,或者可能出现计数器正本和计数器副本不一致;电子钱包正本和电子钱包副本一致的情况;无论出现上述哪种情况,均可以通过本发明提供的方法使加密存储卡在进行本次交易流程之前,将计数器正本和计数器副本保持一致,电子钱包正本和电子钱包副本保持一致,从而使加密存储卡在进行本次交易流程后可以正常工作。

实施例4

本实施例还提供了一种具有恢复机制的加密存储卡,如图9所示,包括:第一接收模块01、第一应用模块02、第一检测模块03、第一恢复模块04、第二恢复模块05、第一初始化模块06、第一计算模块07、第一更新模块08、第一返回模块09和第二更新模块10;

第一接收模块01,用于接收来自终端的指令;

第一应用模块02,根据第一接收模块01接收到的来自终端的选择应用指令选择电子钱包应用;

第一检测模块03,用于当第一应用模块02选择电子钱包应用后,检测电子钱包正本和电子钱包副本;

第一恢复模块04,用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配且根据电子钱包正本中的钱包正本掉电判据检测出电子钱包正本有效时,根据电子钱包正本更新电子钱包副本;或者用于当第一检测模块03根据电子钱包副本中的钱包副本掉电判据检测出电子钱包副本无效时,根据电子钱包正本更新电子钱包副本;

第二恢复模块05,用于当第一检测模块03根据电子钱包正本中的钱包正本掉电判据检测出电子钱包正本无效时,根据电子钱包副本更新电子钱包正本;

第一初始化模块06,用于当第一接收模块01接收到的来自终端的消费初始化指令后,初始化消费,从消费初始化指令中获取消费扣款金额;

第一计算模块07,用于当第一接收模块01接收到来自终端的消费扣款指令后,根据第一初始化模块06获取到的消费扣款金额计算当前电子钱包余额;

第一更新模块08,用于根据当前电子钱包余额和钱包正本掉电判据更新电子钱包正本;

第二更新模块10,用于当第一更新模块08更新电子钱包正本后,根据电子钱包正本更新电子钱包副本;

第一返回模块09,用于当第一恢复模块04根据电子钱包正本更新电子钱包副本后,向终端返回选择应用成功应答;当第二恢复模块05根据电子钱包副本更新电子钱包正本后,向终端返回选择应用成功应答;当第一初始化模块06初始化消费,从消费初始化指令中获取消费扣款金额后,向终端返回初始化成功应答;以及当第二更新模块10根据电子钱包正本更新电子钱包副本后,向终端返回消费成功应答。

本实施例中,钱包正本掉电判据可以为第一预设值,钱包副本掉电判据可以为第一预设值,第一检测模块03可以具体包括:第一检测单元和第二检测单元;或者具体包括:包括第二检测单元和第三检测单元;

当第一检测模块03具体包括第一检测单元和第二检测单元时:

第一检测单元,用于当第一应用模块02选择电子钱包应用后,检测电子钱包正本和电子钱包副本是否匹配;

第二检测单元,用于当第一应用模块02选择电子钱包应用后,根据钱包正本掉电判据检测电子钱包正本是否有效;

第二检测单元,具体用于当第一应用模块02选择电子钱包应用后,检测电子钱包正本中的第六预设字段上的数据是否和第一预设值相匹配,如果是,则检测出电子钱包正本有效;否则,检测出电子钱包正本无效;

第一更新模块08,具体用于将第一预设值作为钱包正本掉电判据,根据当前电子钱包余额和钱包正本掉电判据生成电子钱包正本,将电子钱包正本写入到电子钱包正本存储区。

本实施例中,第六预设字段上的数据为电子钱包正本中的数据,其在电子钱包正本中的位置可以有多种可能,如处于电子钱包正本中的第一到第四字节或者电子钱包正本中的第二到第五字节或者电子钱包正本中的第三到第四字节等等,优选地,第六预设字段为电子钱包正本的第十三到第十六字节。

当第一检测模块03具体包括第二检测单元和第三检测单元时:

第二检测单元,用于当第一应用模块02选择电子钱包应用后,根据钱包正本掉电判据检测电子钱包正本是否有效;

第三检测单元,用于当第一应用模块02选择电子钱包应用后,根据钱包副本掉电判据检测电子钱包副本是否有效;

第二检测单元,具体用于当第一应用模块02选择电子钱包应用后,检测电子钱包正本中的第六预设字段上的数据是否和第一预设值相匹配,如果是,则检测出电子钱包正本有效;否则,检测出电子钱包正本无效;

第一更新模块08,具体用于将第一预设值作为钱包正本掉电判据,使用钱包正本掉电判据更新电子钱包正本的第六预设字段上的数据,生成包括当前电子钱包余额和钱包正本掉电判据的电子钱包正本,将电子钱包正本写入到电子钱包正本存储区;

第三检测单元,具体用于当第一应用模块02选择电子钱包应用后,从电子钱包副本中获取电子钱包正本,检测所述电子钱包副本中的第九预设字段上的数据是否和第一预设值相匹配,如果是,则检测出电子钱包副本有效;否则,检测出电子钱包副本无效。

本实施例中,第九预设字段上的数据为电子钱包副本中的数据,其在电子钱包副本中的位置可以有多种可能,如处于电子钱包副本中的第一到第四字节或者电子钱包副本中的第二到第五字节或者电子钱包副本中的第三到第四字节等等,优选地,第九预设字段上为电子钱包副本的第十三到第十六字节。

本实施例中,第一恢复模块04,具体用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配且根据钱包正本掉电判据检测出电子钱包正本有效时,将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;当第一检测模块03根据钱包副本掉电判据检测出电子钱包副本无效时,将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;

第二恢复模块05,具体用于当第一检测模块03根据钱包正本掉电判据检测出电子钱包正本无效时,将电子钱包副本作为电子钱包正本写入到电子钱包正本存储区;

第二更新模块10,具体用于当第一更新模块08更新电子钱包正本后,将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区。

本实施例中,第一返回模块09,还可以用于当第一检测模块03检测出电子钱包正本和电子钱包副本匹配时,向终端返回选择应用成功应答。

本实施例中,第一返回模块09,还可以用于当第一检测模块03根据电子钱包正本中的钱包正本掉电判据检测出电子钱包正本无效且根据电子钱包副本中的钱包副本掉电判据检测出电子钱包副本无效时,向终端报错。

本实施例中,在加密存储卡包括第一接收模块01、第一应用模块02、第一检测模块03、第一恢复模块04、第二恢复模块05、第一初始化模块06、第一计算模块07、第一更新模块08、第一返回模块09和第二更新模块10的基础上,加密存储卡还可以包括:第三更新模块、第四更新模块和第五更新模块;

第三更新模块,用于当第一接收模块01接收到自终端的消费扣款指令后,第一计算模块07计算当前电子钱包余额之前,从电子钱包应用中获取累计交易次数,更新累计交易次数;

第四更新模块,用于根据累计交易次数更新计数器正本,触发第一计算模块07;

第四更新模块,具体用于根据累计交易次数更新计数器正本中的第一有效数据,根据第一有效数据计算计数器正本掉电判据;根据第一有效数据和计数器正本掉电判据生成计数器正本,将计数器正本写入到计数器正本存储区。

第五更新模块,用于当第一更新模块08更新电子钱包正本之后,第二更新模块10更新电子钱包副本之前,根据计数器正本更新计数器副本。

在加密存储卡还包括第三更新模块、第四更新模块和第五更新模块的基础上,进一步地,加密存储卡还可以包括:第三恢复模块、第四恢复模块和第五恢复模块;

第一检测模块03,还用于当第一应用模块02选择电子钱包应用后,检测计数器正本和计数器副本;

第三恢复模块,用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,根据电子钱包正本更新电子钱包副本,根据计数器正本更新计数器副本;

第四恢复模块,用于当第一检测模块03检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,根据电子钱包副本更新电子钱包正本;根据计数器副本更新计数器正本;

第五恢复模块,用于当第一检测模块03检测出电子钱包正本和电子钱包副本匹配、计数器正本和计数器副本不匹配时,根据计数器副本更新计数器正本;

第一返回模块09,还用于当第三恢复模块根据电子钱包正本更新电子钱包副本,根据计数器正本更新计数器副本后,向终端返回选择应用成功应答;当第四恢复模块根据电子钱包副本更新电子钱包正本,根据计数器副本更新计数器正本后,向终端返回选择应用成功应答;当第五恢复模块根据计数器副本更新计数器正本后,向终端返回选择应用成功应答;当第一检测模块03检测出电子钱包正本和电子钱包副本匹配且计数器正本匹配和计数器副本匹配时,向终端返回选择应用成功应答。

更进一步地,第三恢复模块包括第一恢复单元和第二恢复单元;第四恢复模块包括第三恢复单元和第四恢复单元;

第一恢复单元,用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,根据电子钱包正本更新电子钱包副本;

第二恢复单元,用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,将计数器正本作为计数器副本写入到计数器副本存储区;

第三恢复单元,用于当第一检测模块03检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,根据电子钱包副本更新电子钱包正本;

第四恢复单元,用于当第一检测模块03检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,将计数器副本作为计数器正本写入到计数器正本存储区;

第五恢复模块,具体用于当第一检测模块03检测出电子钱包正本和电子钱包副本匹配、计数器正本和计数器副本不匹配时,将计数器副本作为计数器正本写入到计数器正本存储区;

第五更新模块,具体用于当第一更新模块08更新电子钱包正本之后,第二更新模块10更新电子钱包副本之前,将计数器正本作为计数器副本写入到计数器副本存储区。

本实施例中,在加密存储卡包括第一接收模块01、第一应用模块02、第一检测模块03、第一恢复模块04、第二恢复模块05、第一初始化模块06、第一计算模块07、第一更新模块08、第一返回模块09和第二更新模块10的基础上,加密存储卡还可以包括:第六更新模块、第七更新模块和第八更新模块;

第六更新模块,用于当第一接收模块01接收到自终端的消费扣款指令后,第一计算模块07计算当前电子钱包余额之前,从电子钱包应用中获取累计交易次数,更新累计交易次数;

第七更新模块,用于将第二预设值作为进程标识;根据累计交易次数和进程标识更新计数器正本,触发第一计算模块07;

第七更新模块,具体用于根据累计交易次数和进程标识更新计数器正本中的第一有效数据,根据第一有效数据计算计数器正本掉电判据;根据第一有效数据和计数器正本掉电判据生成计数器正本,将计数器正本写入到计数器正本存储区。

第八更新模块,用于当第二更新模块10更新电子钱包副本之后,第一返回模块09向终端返回消费成功应答之前,根据计数器正本更新计数器副本。

本实施例中,在加密存储卡包括第一接收模块01、第一应用模块02、第一检测模块03、第一恢复模块04、第二恢复模块05、第一初始化模块06、第一计算模块07、第一更新模块08、第一返回模块09、第二更新模块10、第六更新模块、第七更新模块和第八更新模块的基础上,加密存储卡还可以包括:第六恢复模块、第七恢复模块、第八恢复模块、第九恢复模块、第十恢复模块和第十一恢复模块;相应地:

第一检测模块03,还用于当第一应用模块02选择电子钱包应用后,检测计数器正本和计数器副本;

第六恢复模块,用于当第一检测模块03检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,根据计数器副本更新计数器正本;根据电子钱包副本更新电子钱包正本;

第六恢复模块,具体用于当第一检测模块03检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,将电子钱包副本作为电子钱包正本写入到电子钱包正本存储区;将计数器副本作为计数器正本写入到计数器正本存储区;

第七恢复模块,用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配,根据钱包正本掉电判据电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识为第二预设值后,更新进程标识,根据更新后的进程标识更新计数器正本,将计数器副本更新为更新后的计数器正本;根据电子钱包正本更新电子钱包副本;

第七恢复模块,具体用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配,根据钱包正本掉电判据电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识为第二预设值后,更新进程标识,根据更新后的进程标识更新计数器正本,将更新后的计数器正本写入到计数器正本存储区,将更新后的计数器正本作为计数器副本写入到计数器副本存储区;将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;

第八恢复模块,用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识不为第二预设值后,根据计数器正本更新计数器副本,根据电子钱包正本更新电子钱包副本;当第一检测模块03检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包副本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,根据计数器正本更新计数器副本,根据电子钱包正本更新电子钱包副本;

第八恢复模块,具体用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配、计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包正本有效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识不为第二预设值后,将计数器正本作为计数器副本写入到计数器副本存储区;将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;向终端返回选择应用成功应答;当第一检测模块03检测出计数器正本和计数器副本不匹配、根据钱包正本掉电判据检测出电子钱包副本无效、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效时,将计数器正本作为计数器副本写入到计数器副本存储区;将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;向终端返回选择应用成功应答;

第九恢复模块,用于当第一检测模块03检测出电子钱包正本和电子钱包副本匹配、计数器正本和计数器副本不匹配,根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识为第二预设值时,根据计数器副本更新计数器正本;当第一检测模块03检测出电子钱包正本和电子钱包副本匹配、根据计数器正本掉电判据检测出计数器正本无效、根据计数器副本掉电判据检测出计数器副本有效时,根据计数器副本更新计数器正本;

第九恢复模块,具体用于当第一检测模块03检测出电子钱包正本和电子钱包副本匹配、计数器正本和计数器副本不匹配,根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识为第二预设值时,将计数器副本作为计数器正本写入到计数器正本存储区;当第一检测模块03检测出电子钱包正本和电子钱包副本匹配、根据计数器正本掉电判据检测出计数器正本无效、根据计数器副本掉电判据检测出计数器副本有效时,将计数器副本作为计数器正本写入到计数器正本存储区;

第十恢复模块,用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配、根据计数器正本掉电判据检测出计数器正本无效、根据计数器副本掉电判据检测出计数器副本有效时,根据计数器副本更新计数器副本中的交易次数,根据更新后的交易次数更新计数器副本;根据更新后的计数器副本更新计数器正本;根据电子钱包正本更新电子钱包副本;

第十恢复模块,具体用于当第一检测模块03检测出电子钱包正本和电子钱包副本不匹配、根据计数器正本掉电判据检测出计数器正本无效、根据计数器副本掉电判据检测出计数器副本有效时,更新计数器副本中的累计交易次数,根据更新后的累计交易次数更新计数器副本,将更新后的计数器副本写入到计数器正本存储区;将更新后的计数器副本写入到计数器副本存储区;将电子钱包正本作为电子钱包副本写入到电子钱包副本存储区;

第十一恢复模块,用于当第一检测模块03根据计数器正本掉电判据检测出计数器正本有效且根据计数器副本掉电判据检测出计数器副本无效时,根据计数器正本更新计数器副本;当第一检测模块03检测出电子钱包正本和电子钱包副本匹配、计数器正本和计数器副本不匹配、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识不为第二预设值后,根据计数器正本更新计数器副本;

第十一恢复模块,具体用于当根据计数器正本掉电判据检测出计数器正本有效且根据计数器副本掉电判据检测出计数器副本无效时,将计数器正本作为计数器副本写入到计数器副本存储区;当第一检测模块03检测出电子钱包正本和电子钱包副本匹配、计数器正本和计数器副本不匹配、根据计数器正本掉电判据检测出计数器正本有效、根据计数器副本掉电判据检测出计数器副本有效、计数器正本中的进程标识不为第二预设值后,将计数器正本作为计数器副本写入到计数器副本存储区;

第一返回模块09,还用于当第六恢复模块根据计数器副本更新计数器正本;根据电子钱包副本更新电子钱包正本后,向终端返回选择应用成功应答;当第七恢复模块更新进程标识,根据更新后的进程标识更新计数器正本,将计数器副本更新为更新后的计数器正本;根据电子钱包正本更新电子钱包副本后,向终端返回选择应用成功应答;当第八恢复模块将计数器副本更新为计数器正本;根据电子钱包正本更新电子钱包副本后,向终端返回选择应用成功应答;当第九恢复模块根据计数器副本更新计数器正本后,向终端返回选择应用成功应答;当第十恢复模块根据计数器副本更新计数器副本中的交易次数,根据更新后的交易次数更新计数器副本;根据更新后的计数器副本更新计数器正本;根据电子钱包正本更新电子钱包副本后,向终端返回选择应用成功应答;当第十一恢复模块根据计数器正本更新计数器副本后,向终端返回选择应用成功应答。

对应地,第八更新模块,具体用于当第二更新模块10更新电子钱包副本之后,第一返回模块09向终端返回消费成功应答之前,将计数器正本作为计数器副本写入到计数器副本存储区。

本实施例中,第一检测模块03或者具体包括:第一检测单元、第二检测单元、第四检测单元、第五检测单元和第六检测单元;

第一检测单元,用于检测电子钱包正本和电子钱包副本是否匹配;

第二检测单元,用于根据钱包正本掉电判据检测电子钱包正本是否有效;

第四检测单元,用于根据计数器正本掉电判据检测计数器正本是否有效;

第五检测单元,用于根据计数器副本掉电判据检测计数器副本是否有效;

第六检测单元,用于检测计数器正本和计数器副本是否匹配;

第四检测单元,具体用于使用计数器正本中的第一有效数据计算第一校验值,将第一校验值作为计数器正本掉电判据,检测第一校验值是否和计数器正本中的第四预设字段上的数据相匹配,如果是,则检测出计数器正本有效,否则,检测出计数器正本无效;

第五检测单元,具体用于使用计数器副本中的第二有效数据计算第二校验值,将第二校验值作为计数器副本掉电判据,检测第二校验值是否和计数器副本中的第八预设字段上的数据相匹配,如果是,则检测出计数器副本有效,否则,检测出计数器副本无效。

本实施例中,第四预设字段上的数据为计数器正本中的数据,其在计数器正本中的位置可以有多种可能,优选地,第四预设字段为计数器正本中的第十六字节。第八预设字段上的数据为计数器副本中的数据,其在计数器副本中的位置可以有多种可能,优选地,第八预设字段为计数器副本中的第十六字节。

本实施例中,第一检测模块03或者具体包括:第一检测单元、第二检测单元、第四检测单元、第五检测单元、第六检测单元和第七检测单元;

第六检测单元,用于当第一应用模块02选择电子钱包应用后,检测计数器正本和计数器副本是否匹配;

第四检测单元,用于当第六检测单元检测为否后,根据计数器正本掉电判据检测计数器正本是否有效;

第五检测单元,用于当第六检测单元检测为否后,根据计数器副本掉电判据检测计数器副本是否有效;

第七检测单元,用于当第五检测单元检测为是且第四检测单元检测为是后,检测计数器正本中的进程标识是否为第二预设值;

第一检测单元,用于当第七检测单元检测为是后,检测电子钱包正本和电子钱包副本是否匹配;当第五检测单元检测为是且第四检测单元检测为否后,检测电子钱包正本和电子钱包副本是否匹配;当第七检测单元检测为否后,检测电子钱包正本和电子钱包副本是否匹配;

第二检测单元,用于当第七检测单元检测为是且第一检测单元检测为否后,根据钱包正本掉电判据检测电子钱包正本是否有效;

第一返回模块09,还用于当第六检测单元检测为是后,向终端返回选择应用成功应答。

进一步地,第一返回模块09,还用于当第五检测单元检测为否且第四检测单元检测为否后,向终端报错。

本实施例中,在加密存储卡包括第一接收模块01、第一应用模块02、第一检测模块03、第一恢复模块04、第二恢复模块05、第一初始化模块06、第一计算模块07、第一更新模块08、第一返回模块09和第二更新模块10的基础上,还可以包括第一判断模块;

第一判断模块,用于判断消费初始化指令的类型;

第一初始化模块06,具体用于当第一判断模块判断出消费初始化指令的类型为应用消费初始化指令时,初始化消费,从应用消费初始化指令中获取消费扣款金额。

本实施例中,在加密存储卡包括第一接收模块01、第一应用模块02、第一检测模块03、第一恢复模块04、第二恢复模块05、第一初始化模块06、第一计算模块07、第一更新模块08、第一返回模块09和第二更新模块10的基础上,还可以还包括第一判断模块和第九更新模块;

第一判断模块,用于判断消费初始化指令的类型;

第一初始化模块06,具体用于当第一判断模块判断出消费初始化指令的类型为复合应用消费初始化指令时,初始化消费,从复合应用消费初始化指令中获取消费扣款金额;

第一接收模块01还用于接收来自终端的更新复合应用数据缓存指令;

第九更新模块,用于当第一接收模块01接收到更新复合应用数据缓存指令后,更新复合应用数据缓存;

第一返回模块09,还用于当第九更新模块更新复合应用数据缓存后,向终端返回更新成功应答。

本实施例中,在加密存储卡包括第一接收模块01、第一应用模块02、第一检测模块03、第一恢复模块04、第二恢复模块05、第一初始化模块06、第一计算模块07、第一更新模块08、第一返回模块09和第二更新模块10的基础上,还可以还包括第十更新模块;

第一计算模块07,具体用于当第一接收模块01接收到来自终端的消费扣款指令后,获取电子钱包应用中的电子钱包余额,计算电子钱包余额与消费扣款金额的差值,将得到的差值作为当前电子钱包余额;

第十更新模块,用于当第二更新模块10根据电子钱包正本更新电子钱包副本后,将电子钱包余额更新为当前电子钱包余额。

本发明提供了一种具有恢复机制的加密存储卡,恢复机制集成在加密存储卡本身,能够保证即使加密存储卡在上次交易流程中出现掉电情况,加密存储卡也可以通过本发明提供的恢复机制,使本次交易流程正常进行。这样不仅缓解了终端的压力;并且即使当终端出现问题时,加密存储卡也可以继续使用,提升了加密存储卡的应用性能。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1