本发明涉及版本校验领域,更具体地说,涉及一种智能卡的COS版本校验方法及校验装置。
背景技术:
随着科技的发展,越来越多的人使用智能卡进行小额支付,如公交卡,购物卡等。智能卡,又叫CPU卡,智能卡中集成有中央处理器、可编程只读存储器、随机存储器以及固化在只读存储器中的COS(Chip Operating System,卡内操作系统或智能卡系统)。该COS具有以下功能:传输管理、文件管理、安全体系以及命令解释等。
智能卡中的数据分为外部读取部分以及内部处理部分,为了确保智能卡中的数据安全可靠,智能卡的COS数据被设置为内部处理部分的数据,正常情况下外部是无法读取到这部分的数据的。
为了保证智能卡COS版本的一致性,智能卡会提供COS版本的校验功能(一般采用CRC码(循环冗余校验码,Cyclic Redundancy Check)进行校验),但是该校验算法也是无法读取到的,这样导致如有人通过同时篡改COS数据以及COS版本的校验算法,使得最终生成的COS版本的CRC码和未篡改时的CRC码相同,这样用户就无法发现智能卡的COS数据已经被人篡改。
故,有必要提供一种智能卡的COS版本校验方法及校验装置,以解决现有技术所存在的问题。
技术实现要素:
本发明实施例的目的在于提供一种智能卡的COS版本校验方法,以解决现有的智能卡的COS版本校验方法不能对智能卡的COS数据进行有效校验的技术问题。
本发明实施例的目的在于提供一种智能卡的COS版本校验装置,以解决现有的智能卡的COS版本校验装置不能对智能卡的COS数据进行有效校验的技术问题。
为解决上述问题,本发明提供的技术方案如下:
提供一种智能卡的COS版本校验方法,其包括步骤:
将智能卡的COS数据划分为至少两个数据块;
使用所述智能卡内置的校验算法以及预设初始值确定每个所述数据块的校验码;以及
根据所述数据块的校验码以及所述智能卡的COS数据的校验码,对所述智能卡的COS版本进行校验。
在本发明所述的智能卡的COS版本校验方法中,所述使用所述智能卡内置的校验算法以及预设初始值确定每个所述数据块的校验码的步骤包括:
使用所述智能卡内置的校验算法以及预设初始值确定第一个数据块的校验码;以及
使用所述智能卡内置的校验算法以及所述数据块的校验码确定下一个数据块的校验码,直至确定最后一个数据块的校验码;
所述根据所述数据块的校验码以及所述智能卡的COS数据的校验码,对所述智能卡的COS版本进行校验的步骤具体为:
根据所述最后一个数据块的校验码以及所述智能卡的COS数据的校验码,对所述智能卡的COS版本进行校验。
在本发明所述的智能卡的COS版本校验方法中,使用所述智能卡内置的校验算法以及所述预设初始值确定所述智能卡的COS数据的校验码。
在本发明所述的智能卡的COS版本校验方法中,所述根据所述最后一个数据块的校验码以及所述智能卡的COS数据的校验码,对所述智能卡的COS版本进行校验的步骤具体为:
如所述最后一个数据块的校验码与所述智能卡的COS数据的校验码相同,则确定所述智能卡的COS版本正常;
如所述最后一个数据块的校验码与所述智能卡的COS数据的校验码不同,则确定所述智能卡的COS版本异常。
在本发明所述的智能卡的COS版本校验方法中,所述将智能卡的COS数据划分为至少两个数据块的步骤具体为:
根据所述智能卡中的应用,将智能卡的COS数据划分为至少两个数据块。
还提供一种智能卡的COS版本校验装置,其包括:
划分模块,用于将智能卡的COS数据划分为至少两个数据块;
数据块校验码确定模块,用于使用所述智能卡内置的校验算法以及预设初始值确定每个所述数据块的校验码;以及
系统数据校验模块,用于根据所述数据块的校验码以及所述智能卡的COS数据的校验码,对所述智能卡的COS版本进行校验。
在本发明所述的智能卡的COS版本校验装置中,所述数据块校验码确定模块包括:
第一数据块校验码确定单元,用于使用所述智能卡内置的校验算法以及预设初始值确定第一个数据块的校验码;以及
第二数据块校验码确定单元,用于使用所述智能卡内置的校验算法以及所述数据块的校验码确定下一个数据块的校验码,直至确定最后一个数据块的校验码;
所述系统数据校验模块包括:
校验单元,用于根据所述最后一个数据块的校验码以及所述智能卡的COS数据的校验码,对所述智能卡的COS版本进行校验。
在本发明所述的智能卡系统版本校验装置中,所述系统数据校验模块使用所述智能卡内置的校验算法以及所述预设初始值确定所述智能卡的COS数据的校验码。
在本发明所述的智能卡系统版本校验装置中,所述校验单元具体用于:
如所述最后一个数据块的校验码与所述智能卡的COS数据的校验码相同,则确定所述智能卡的COS版本正常;
如所述最后一个数据块的校验码与所述智能卡的COS数据的校验码不同,则确定所述智能卡的COS版本异常。
在本发明所述的智能卡系统版本校验装置中,所述划分模块具体用于:
根据所述智能卡中的应用,将智能卡的COS数据划分为至少两个数据块。
相较于现有技术的智能卡的COS版本校验方法及校验装置,本发明的智能卡的COS版本校验方法及校验装置通过将智能卡的COS数据划分为多个数据块,通过对多个数据块的校验码以及COS数据的校验码的比较,实现对智能卡的COS版本进行有效的校验。解决了现有的智能卡的COS版本校验装置不能对智能卡的COS数据进行有效校验的技术问题。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明的智能卡的COS版本校验方法的第一优选实施例的流程图;
图2为本发明的智能卡的COS版本校验方法的第二优选实施例的流程图;
图3为本发明的智能卡的COS版本校验装置的第一优选实施例的结构示意图;
图4为本发明的智能卡的COS版本校验装置的第二优选实施例的结构示意图。
具体实施方式
下面结合图示,对本发明的优选实施例作详细介绍。
请参照图1,图1为本发明的智能卡的COS版本校验方法的第一优选实施例的流程图。本优选实施例的智能卡的COS版本校验方法包括:
步骤S101,将智能卡的COS数据划分为至少两个数据块;
步骤S102,使用智能卡内置的校验算法以及预设初始值确定每个数据块的校验码;
步骤S103,根据数据块的校验码以及智能卡的COS数据的校验码,对智能卡的COS版本进行校验;
本优选实施例的智能卡的COS版本校验方法结束于步骤S103。
下面详细说明本优选实施例的智能卡的COS版本校验方法的各步骤的具体流程。
在步骤S101中,将智能卡的COS数据划分为至少两个数据块,以便后续对每个数据块分别进行校验码的计算。数据块划分的数量和位置可根据需要确定。这里优选根据智能卡中的应用,对智能卡的COS数据进行划分,即每个划分后的数据块包括至少一个完整的应用。由于应用服务商一般只关心其开发的应用是否被篡改,因此按应用对COS数据进行划分,方便应用服务商对其开发的应用单独进行校验。
随后执行步骤S102。
在步骤S102中,使用智能卡内置的校验算法以及预设初始值确定步骤S101中生成的每个数据块的校验码,这里校验人员无法直接读取智能卡的内置校验算法,只能使用智能卡的内置校验算法以及预设初始值进行校验码的计算,如COS数据以及智能卡的内置校验算法被篡改,虽然智能卡的COS数据的校验码没有改变,但是数据块的校验码会发生变化,从而可以使用户获知其使用的智能卡的COS数据是否被篡改。
随后执行步骤S103。
在步骤S103中,使用智能卡的内置校验算法以及预设初始值直接结算整个智能卡的COS数据的校验码,然后将整个智能卡的COS数据的校验码与步骤S102中确定的每个数据块的校验码进行对比,完成智能卡的COS版本的校验。
这样即完成了整个智能卡的COS版本的校验过程。
本优选实施例的智能卡的COS版本校验方法通过将智能卡的COS数据划分为多个数据块,通过对多个数据块的校验码以及COS数据的校验码的比较,实现对智能卡的COS版本进行有效的校验。
请参照图2,图2为本发明的智能卡的COS版本校验方法的第二优选实施例的流程图。本优选实施例的智能卡的COS版本校验方法包括:
步骤S201,将智能卡的COS数据划分为至少两个数据块;
步骤S202,使用智能卡内置的校验算法以及预设初始值确定第一个数据块的校验码;
步骤S203,使用智能卡内置的校验算法以及数据块的校验码确定下一个数据块的校验码,直至确定最后一个数据块的校验码;
步骤S204,根据最后一个数据块的校验码以及智能卡的COS数据的校验码,对智能卡的COS版本进行校验;
本优选实施例的智能卡的COS版本校验方法结束于步骤S204。
下面详细说明本优选实施例的智能卡的COS版本校验方法的各步骤的具体流程。
在步骤S201中,将智能卡的COS数据划分为至少两个数据块,以便后续对每个数据块分别进行校验码的计算。数据块划分的数量和位置可根据需要确定。这里优选根据智能卡中的应用,对智能卡的COS数据进行划分,即每个划分后的数据块包括至少一个完整的应用。由于应用服务商一般只关心其开发的应用是否被篡改,因此按应用对COS数据进行划分,方便应用服务商对其开发的应用单独进行校验。
随后执行步骤S202。
在步骤S202中,使用智能卡内置的校验算法以及预设初始值确定步骤S201中生成的第一个数据块的校验码,这里校验人员无法直接读取智能卡的内置校验算法,只能使用智能卡的内置校验算法以及预设初始值进行校验码的计算。
随后执行步骤S203。
在步骤S203中,使用智能卡内置的校验算法以及数据块的校验码确定下一个数据块的校验码,具体为将步骤S202中计算出来的第一个数据块的校验码作为第二个数据块的初始值,然后使用智能卡内置的校验算法以及第二个数据块的初始值确定第二个数据块的校验码;随后将第二个数据块的校验码作为第三个数据块的初始值,再使用智能卡内置的校验算法以及第三个数据块的初始值确定第三个数据块的校验码;依此类推,确定最后一个数据块的校验码。
随后执行步骤S204。
在步骤S204中,使用智能卡的内置校验算法以及预设初始值直接结算整个智能卡的COS数据的校验码,然后将整个智能卡的COS数据的校验码与步骤S203中确定的最后一个数据块的校验码进行对比,如最后一个数据块的校验码与智能卡的COS数据的校验码相同,则确定智能卡的COS版本正常;如最后一个数据块的校验码与智能卡的COS数据的校验码不同,则确定智能卡的COS版本异常。
这样即完成了整个智能卡的COS版本的校验过程。
本优选实施例的智能卡的COS版本校验方法通过将智能卡的COS数据划分为多个数据块,并通过多个数据块最终的校验码与COS数据的校验码进行比较,实现对智能卡的COS版本进行有效的校验。
本发明还提供一种智能卡的COS版本校验装置。请参照图3,图3为本发明的智能卡的COS版本校验装置的第一优选实施例的结构示意图。本优选实施例的智能卡的COS版本校验装置30包括划分模块31、数据块校验码确定模块32以及系统数据校验模块33。其中划分模块31用于将智能卡的COS数据划分为至少两个数据块;数据块校验码确定模块32用于使用智能卡内置的校验算法以及预设初始值确定每个数据块的校验码;系统数据校验模块33用于根据数据块的校验码以及智能卡的COS数据的校验码,对智能卡的COS版本进行校验。
本优选实施例的智能卡的COS版本校验装置30使用时,首先划分模块31将智能卡的COS数据划分为至少两个数据块,随后数据块校验码确定模块32使用智能卡内置的校验算法以及预设初始值确定每个数据块的校验码;最后系统数据校验模块33根据数据块的校验码以及智能卡的COS数据的校验码,对智能卡的COS版本进行校验。
本优选实施例的智能卡的COS版本校验装置30的具体使用过程与上述的智能卡的COS版本校验方法的第一优选实施例的描述相同或相似,具体请参见上述智能卡的COS版本校验方法的第一优选实施例中的相关描述。
本优选实施例的智能卡的COS版本校验装置通过将智能卡的COS数据划分为多个数据块,通过对多个数据块的校验码以及COS数据的校验码的比较,实现对智能卡的COS版本进行有效的校验。
请参照图4,图4为本发明的智能卡的COS版本校验装置的第二优选实施例的结构示意图。本优选实施例的COS版本校验装置40包括划分模块41、数据校验码确定模块42以及系统数据校验模块43。其中划分模块41用于将智能卡的COS数据划分为至少两个数据块;数据块校验码确定模块42用于使用智能卡内置的校验算法以及预设初始值确定每个数据块的校验码;系统数据校验模块43用于根据数据块的校验码以及智能卡的COS数据的校验码,对智能卡的COS版本进行校验。
本优选实施例的数据块校验码确定模块42还包括第一数据块校验码确定单元421以及第二数据码确定单元422;系统数据校验模块43包括校验单元431。第一数据块校验码确定单元421用于使用智能卡内置的校验算法以及预设初始值确定第一数据块的校验码;第二数据块校验码确定单元422用于使用智能卡内置的校验算法以及数据块的校验码确定下一个数据块的校验码,直至确定最后一个数据块的校验码;校验单元431用于根据最后一个数据块的校验码以及智能卡的COS数据的校验码,对智能卡的COS版本进行校验。
本优选实施例的智能卡的COS版本校验装置40使用时,首先划分模块41将智能卡的COS数据划分为至少两个数据块;随后数据块校验码确定模块42的第一数据块校验码确定单元421使用智能卡内置的校验算法以及预设初始值确定第一数据块的校验码;然后数据块校验码确定模块42的第二数据块校验码确定单元422使用智能卡内置的校验算法以及数据块的校验码确定下一个数据块的校验码,直至确定最后一个数据块的校验码;最后系统数据校验模块43的校验单元431根据最后一个数据块的校验码以及智能卡的COS数据的校验码,对智能卡的COS版本进行校验。
本优选实施例的智能卡的COS版本校验装置40的具体使用过程与上述的智能卡的COS版本校验方法的第二优选实施例的描述相同或相似,具体请参见上述智能卡的COS版本校验方法的第二优选实施例中的相关描述。
本优选实施例的智能卡的COS版本校验装置通过将智能卡的COS数据划分为多个数据块,并通过多个数据块最终的校验码与COS数据的校验码进行比较,实现对智能卡的COS版本进行有效的校验。
下面通过一具体实施例说明本发明的智能卡的COS版本校验方法及校验装置的具体工作原理。
COS数据的校验码的取得:
如智能卡的COS数据为0x6162,采用CRC-16/XMODEM的校验码算法,预设初始值取0x0000,计算的COS数据(即COS版本)的校验码为0x74FF。
数据块的校验码的取得:
如智能卡的COS数据为0x6162,将该智能卡的COS数据分为0x61和0x62,首先采用CRC-16/XMODEM的校验码算法,预设初始值取0x0000,计算的COS数据(即COS版本)的校验码为:
(0x00<<8)^crc(0x61^0x00)=0x7C87。
然后依然采用CRC-16/XMODEM的校验码算法,预设初始值取0x7C87,计算的COS数据(即COS版本)的校验码为:
(0x87<<8)^crc(0x62^0x7c)=0x8700^crc(1E)=0x8700^0xF3FF=0x74FF。
可见如智能卡的COS数据采用标准的CRC-16/XMODEM的校验码算法进行数据的校验时,COS数据的校验码与最后一个数据块的校验码应该是相同的。这是由于CRC-16/XMODEM的校验码的生成是以数据的每个字节为单位进行计算的,因此COS数据的校验码可以整体COS数据来生成,也可以COS数据包括的多个数据块来生成。
如果修改了COS数据,但又要保持COS数据的校验码不变,必然要对COS数据的校验码算法进行改变,改变后的校验码算法则难以保持上述了校验码是以数据的每个字节为单位进行计算的特性。因此如采用多个数据块来生成COS数据的校验码,会造成数据块最终的校验码与COS数据的校验码不一致,从而可校验出COS数据被篡改。
本发明的智能卡的COS版本校验方法及校验装置通过将智能卡的COS数据划分为多个数据块,通过对多个数据块的校验码以及COS数据的校验码的比较,实现对智能卡的COS版本进行有效的校验。解决了现有的智能卡的COS版本校验装置不能对智能卡的COS数据进行有效校验的技术问题。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。