智能卡的数据存储及校验方法、装置及介质与流程

文档序号:25481148发布日期:2021-06-15 21:40阅读:214来源:国知局
智能卡的数据存储及校验方法、装置及介质与流程

本发明涉及智能卡及计算机技术领域,特别涉及一种智能卡的数据存储及校验方法、装置及介质。



背景技术:

智能卡是一种用于身份识别的计算机系统,内部有处理器、存储器、输入输出接口。其内部存储有特定功能的软件以及用户的个人信息数据。参考图1,将软件和数据写入到卡片中的过程称之为卡个人化,通常包括:预个人化,软件代码(code)下载以及固定数据(data)的下载,在该阶段写入的信息对于同一批次的所有卡片均完全一致。固定数据可以理解为类似文件系统的数据;后个人化,对第一步写入的固定数据进行更改实现用户的个性化数据写入,例如id,密钥等,在该阶段写入的数据对于不同的卡片则数据不同,例如id对于每张卡应该保持唯一。

参考图2,个性化数据的写入方法,一般是执行一个事先准备好的脚本模板对上述预个人化的固定数据进行更改。该模板中包含一些写指令,其中指令的待写内容为变量。每次对一张卡操作时,首先将该卡片的个性化数据填入到模板中,形成一个完整的脚本并执行写入操作。例如,写入iccid的指令为“00d600000a[var.iccid]”,其中“00d600000a”表示更新文件操作,“[var.iccid]”是表示iccid的一个变量,每次写入时要将其替换为具体的iccid值。

在个人化工厂的生产制造过程中,一个批次的生产过程往往有成千上万甚至上百万的卡片,由于设备稳定性等因素影响会出现预个人化或者后个人化写入失败或者错误的情况。卡片数据只要有任何一个错误就有可能导致用户在使用中出现问题。为了防止这一类的问题,通常在生产完成后利用特别设计的测试程序对卡片进行相关测试。

对于测试程序来说,生产完成的卡片就是一个黑盒子,为了检查个人化是否正确就需要对其进行测试。整个测试分为三个部分,检查代码是否写入正确,检查固定数据是否写入正确,检查个性化数据是否写入正确。由于代码下载到卡片之后一般位于连续的空间,且其内容不应该有任何变化,所以可以通过计算校验值的方式来检查是否写入正确。问题在于固定数据和个性化数据的检查:由于id,密钥等个性化数据实际存储的位置正是固定数据的一部分,且每张卡的个性化数据不相同,导致无法对其整体校验。同时,某些个性数据写入卡片之后就不再允许读取,例如密钥。这样结果就是测试程序只能通过设计特别的测试过程,通过检查卡片的运行时表现来确定数据是否正确。测试过程比较耗时,且不可避免影响了卡片的初始状态,导致无法进行全面测试而只能抽样检测。



技术实现要素:

本发明的目的在于至少解决现有技术中存在的技术问题之一,提供了一种智能卡的数据存储及校验方法、装置及介质,能够实现智能卡的全部高效检测。

本发明的技术方案包括一种智能卡的数据存储及校验方法,所述智能卡包括状态标识符、个性化存储区域、映射表、上层模块及底层驱动,其特征在于:根据接收的第一指令调整所述状态标识符;所述状态标识符为第一状态时,根据所述个性化存储区域的数据更改,动态调整所述底层驱动的物理地址以及映射表的逻辑地址;串联所述智能卡的数据,生成对应的校验值;根据接收的第二指令执行校验值的测试。

根据所述的智能卡的数据存储及校验方法,其特征在于,其中第一指令调整用于将所述状态标识符变更为可以执行后个人化状态,其中状态标识符包括0和1,1为可以执行后个人化状态,0为未执行后个人化状态或已完成数据存储及校验。

根据所述的智能卡的数据存储及校验方法,其特征在于,其中数据包括个性化数据、代码数据及固定数据,所述个性化数据存储于个性化存储区域,所述个性化存储区域为物理地址。

根据所述的智能卡的数据存储及校验方法,其特征在于,其中映射表用于存储所述逻辑地址,以及,存储所述物理地址与所述逻辑地址的关联关系。

根据所述的智能卡的数据存储及校验方法,其特征在于,其中状态标识符为第一状态时,根据所述个性化存储区域的数据更改,动态调整所述底层驱动的物理地址以及映射表的逻辑地址包括:在所述映射表中追加表项,所述表项包括逻辑起始地址、逻辑结束地址、物理起始地址及物理结束地址,其中逻辑起始地址及逻辑结束地址为所述上层模块期望写入的数据位置,所述物理起始地址及所述物理结束地址为实际数据存放的位置。

根据所述的智能卡的数据存储及校验方法,其特征在于,其中物理起始地址的确定方法为:若所述映射表为空,则所述物理起始地址为所述个性化存储区域的起始地址,否则物理起始地址递增,所述物理结束地址的值为:物理起始地址+(逻辑起始地址-逻辑结束地址);以及,将实际数据保存于所述物理起始地址、所述物理结束地址所表示的区域。

根据所述的智能卡的数据存储及校验方法,其特征在于,其中数据更改还包括对于底层驱的读操作,具体地,若所述上层模块读取的目标地址位于所述映射表任一项所表示的区域,则从对应所述物理起始地址、所述物理结束地址的区域中进行读取。

根据所述的智能卡的数据存储及校验方法,其特征在于,其中串联所述智能卡的数据,生成对应的校验值包括:将存储于所述智能卡的个性化数据、代码数据及固定数据依照写入顺序进行串联,其中所述代码数据及所述固定数据为固定写入数据,可以在写入前计算其校验值,其中校验值通过crc32或sha1算法计算得到。

根据所述的智能卡的数据存储及校验方法,其特征在于,其中根据接收的第二指令执行校验值的测试包括:将所述个性化数据、所述代码数据及所述固定数据的校验值与校验数据进行对比计算。

本发明的技术方案还包括一种智能卡的数据存储及校验装置,该装置包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现任一所述的方法步骤。

本发明的技术方案还包括一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现任一所述的方法步骤。

本发明的有益效果为:通过对存储的个性化数据进行映射,并将映射的数据生成对应的校验值,只需要对三个存储区域的校验值进行测试,实现了快速的检测。同时由于校验值的计算相对较快,可以做到每张卡生产完成之后立即检测,而不是抽样检测,覆盖面为100%。

附图说明

下面结合附图和实施例对本发明进一步地说明;

图1所示为个人化流程图;

图2所示为个人化数据写入示意图;

图3所示为根据本发明实施方式的流程示意图;

图4所示为根据本发明实施方式的数据变更的映射示意图;

图5所示为根据本发明实施方式的装置示意图。

具体实施方式

本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。

在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。

在本发明的描述中,对方法步骤的连续标号是为了方便审查和理解,结合本发明的整体技术方案以及各个步骤之间的逻辑关系,调整步骤之间的实施顺序并不会影响本发明技术方案所达到的技术效果。

本发明的描述中,除非另有明确的限定,设置等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。

参照图3及图4,首先图3为本发明的流程示意图,包括:根据接收的第一指令调整状态标识符;状态标识符为第一状态时,根据个性化存储区域的数据更改,动态调整底层驱动的物理地址以及映射表的逻辑地址;串联智能卡的数据,生成对应的校验值;根据接收的第二指令执行校验值的测试。

参考图4,对于第一指令调整状态标识符,本发明的实施方式通过增加一条指令用于表明“后个人化开始”,同时卡内保存一个状态标记,初始为0。当“后个人化开始”之后该状态值为1,表示卡片处于“后个人化”状态。增加新的个性化数据存储区域“vdata”,用于存储所有的个性化数据,即该区域为数据的物理存放位置。增加“vdata”区的校验指令用于获取该区域数据的校验值。卡片内部记录一个映射表“map”。用于记录数据的物理地址与逻辑地址之间的映射关系。将卡内软件定义为“上层模块”和“底层驱动”两层,该两层之间定义数据的读写接口“read”、“write”。

当卡片处于“后个人化”状态时,对于“上层模块”任意一个更改“data”区的动作,“底层驱动”对“map”表做如下处理:

(1)追加第n个表项(假设已经有n-1项),内容为“逻辑起始地址”(lstart_n)、“逻辑结束地址”(lend_n)、“物理起始地址”(pstart_n)、“物理结束地址”(pend_n)。其中lstart_n、lend_n表示“上层模块”期望写入的数据位置,pstart_n、pend_n表示实际数据存放的位置。pstart_n、pend_n的取值由下述方法确定。

(2)pstart_n的确定方法是,若“map”表为空,则pstart_n=‘vdata起始地址’;否则pstart_n=pend_n-1+1。pend_n的值为pstart_n+(lend_n-lstart_n)。

(3)将实际数据保存在pstart_n、pend_n所表示的区域。

同时,对于‘底层驱动’的‘read’操作,若发现‘上层模块’读取的目标地址位于‘map’表中的某一项[lstart_x,lend_x]所表示的区域,则从对应的[pstart_x,pend_x]读取。

本发明的实施方式还包括测试方案,具体如下:

测试程序事先将一张卡的所有个性数据串联,串联顺序为写入卡片的顺序,然后计算其校验值“verify-vdata”(个性化数据校验值)。另外“code”(代码数据)及“data”(固定数据)区在写入之后不再发生变化,也可以事先计算得到校验值“verify-code”(代码数据校验值)和“verify-data”(固定数据校验值)。

在卡片个人化步骤完成之后,通过指令分别获取卡片上“code”,“data”,“vdata”区的校验值,并与测试程序的计算结果相对比,如果全部相同则测试通过。

由于code、data、vdata区的地址和大小是已知的,可以使用类似crc32或者sha1算法计算数据的校验值,这类算法的特点是输入数据可以是任意长度,输出结果为固定长度。且当输入数据有任何微小变化时,输出结果也会不同,能够准确确定智能卡的数据是否发生变化,一种实施方式如下所示:

verify-code=crc32(code);

verify-data=crc32(data);

verify-vdata=crc32(vdata)。

图5所示为根据本发明实施方式的装置示意图。装置包括存储器100及处理器200,其中处理器200存储有计算机程序,计算机程序用于执行:根据接收的第一指令调整状态标识符;状态标识符为第一状态时,根据个性化存储区域的数据更改,动态调整底层驱动的物理地址以及映射表的逻辑地址;串联智能卡的数据,生成对应的校验值;根据接收的第二指令执行校验值的测试。其中,存储器100用于存储数据。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

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