一种智能卡及其工作方法与流程

文档序号:12365825阅读:451来源:国知局
一种智能卡及其工作方法与流程

本发明涉及智能卡技术领域,尤其涉及一种智能卡及其工作方法。



背景技术:

随着智能卡应用的普及,刷卡成为了人民日常生活的一部分,但刷卡的环境却不一定是安全的。目前,对于交易场景的识别是由终端中的安全芯片来完成的,而对于交易的主体智能卡来说,本身并不知道交易发生的场景,如果在交易过程中终端未能即时发现卡片被非法替换、或者拔除,则会导致欺骗交易的发生。



技术实现要素:

为解决现有技术中存在的技术问题,本发明提出了一种智能卡及其工作方法。

本发明采用的技术方案如下:

一种智能卡的工作方法,包括以下步骤:

步骤S1:卡片上电,向终端返回卡片应答;

步骤S2:卡片检测I/O电平,当检测到I/O电平为低电平时,开始接收终端发来的命令头数据;

当卡片在10个etu内接收到1字节的数据时,判断当前接收到的1字节的数据是否正确,是则卡片将接收到的1字节的数据记录为命令头数据的1个字节,在第11、12个etu保持I/O电平为高电平,执行步骤S3;否则卡片在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,执行步骤S3;

进一步的,当步骤S2中判断当前接收到的1字节的数据不正确时,还包括判断当前接收到的1字节的数据是否为所述命令头数据的第一个字节,是则卡片在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,并向终端返回预设字节数据,然后执行步骤S3;否则卡片在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,执行步骤S3。

步骤S3:卡片根据当前记录的命令头数据判断是否接收完成所述命令头数据,是则根据所述命令头数据确定命令类型,并执行步骤S4,否则返回执行步骤S2;

步骤S4:卡片根据所述命令类型判断是否要接收命令数据,是则根据所述命令头数据确定要接收的命令数据长度并执行步骤S5,否则执行步骤S7;

步骤S5:卡片检测I/O电平,当卡片检测到I/O电平为低电平时,开始接收终端发来的命令数据;

当卡片在10个etu内接收到1字节的数据时,判断当前接收到的1字节的数据是否正确,是则卡片将接收到的1字节的数据记录为命令数据的1个字节,在第11、12个etu保持I/O电平为高电平,执行步骤S6;否则卡片在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,执行步骤S6;

步骤S6:卡片根据当前记录的命令数据和所述命令数据长度判断是否接收完成所述命令数据,是则执行步骤S7,否则返回执行步骤S5;

步骤S7:卡片根据所述命令类型执行相应处理并返回响应数据给终端。

一种智能卡,包括第一响应模块、第一收发模块、第一判断模块、第二判断模块、第二收发模块、第三判断模块和第二响应模块;

所述第一响应模块,用于卡片上电后向终端返回卡片应答,并触发所述第一收发模块;

所述第一收发模块,用于收到所述第一响应模块或第一判断模块的触发时,检测I/O电平,当检测到I/O电平为低电平时,开始接收终端发来的命令头数据,在10个etu内接收到1字节的数据时,判断当前接收到的1字节的数据是否正确,是则将接收到的1字节的数据记录为命令头数据的1个字节,在第11、12个etu保持I/O电平为高电平,触发第一判断模块;否则卡片在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,触发第一判断模块;

所述第一判断模块,用于收到所述第一收发模块的触发时,判断所述第一收发模块是否接收完成所述命令头数据,是则根据所述第一收发模块接收到的命令头数据确定命令类型,并触发所述第二判断模块,否则触发所述第一收发模块;

所述第二判断模块,用于根据所述第一判断模块确定的所述命令类型判断是否要接收命令数据,是则根据所述第一收发模块接收到的命令头数据确定要接收的命令数据长度并触发第二收发模块,否则触发第二响应模块;

所述第二收发模块,用于收到所述第二判断模块或第三判断模块的触发时,检测I/O电平,当卡片检测到I/O电平为低电平时,开始接收终端发来的命令数据,在10个etu内接收到1字节的数据时,判断当前接收到的1字节的数据是否正确,是则将接收到的1字节的数据记录为命令数据的1个字节,在第11、12个etu保持I/O电平为高电平,触发第三判断模块;否则在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,触发第三判断模块;

所述第三判断模块,用于收到所述第二收发模块的触发时,根据所述第二判断模块确定的所述命令数据长度判断所述第二收发模块是否接收完成所述命令数据,是则触发第二响应模块,否则触发第二收发模块;

所述第二响应模块,用于根据所述第一判断模块确定的所述命令类型执行相应处理并返回响应数据给所述终端。

进一步的,上述第一收发模块具体包括检测单元、接收单元、第一判断单元和第二判断单元;

所述检测单元,用于收到所述第一响应模块或第一判断模块的触发时,检测I/O电平,当检测到I/O电平为低电平时,触发接收单元;

所述接收单元,用于接收终端发来的命令头数据,每当在10个etu内接收到1字节的数据时,触发第一判断单元;

所述第一判断单元,用于判断所述接收单元当前接收到的1字节的数据是否正确,是则将接收到的1字节的数据记录为命令头的1个字节,在第11、12个etu保持I/O电平为高电平,触发第一判断模块;否则触发第二判断单元;

所述第二判断单元,用于判断所述接收单元当前接收到的1字节的数据是否为所述命令头数据的第一个字节,是则将接收到的1字节的数据记录为命令头的第一个字节,在第11、12个etu保持I/O电平为高电平,并向终端返回预设字节数据,然后触发第一判断模块;否则在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,触发第一判断模块。

本发明的有益效果如下:本发明提供的智能卡及其工作方法,既可适用于标准类型智能卡,又可适用于非标准类型的智能卡,兼容性强。本发明提供的智能卡及其工作方法,还可以实现在交易过程中防止欺骗交易的发生,应用安全性高。

附图说明

图1是本发明实施例1提供的一种智能卡的工作方法流程图;

图2是图1中所示步骤8至步骤16的具体细化图;

图3是本发明实施例3提供的一种智能卡的模块组成框图。

具体实施方式

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

本发明提供的实施例中,etu(elementary time unit,基本时间单元),是通信协议里面通用的一个单位,是指I/O线上传输一个比特位所用的时钟周期个数。

在卡片和终端的通信过程中,卡片每收发一个字节的数据需要12个etu:起始位(1个etu)+数据位(8个etu)+奇偶校验位(1个etu)+错误检测位(2个etu),其中,在第1至第10个etu时卡片的I/O(输入/输出端口)为电信号接收状态,其中第1个etu时卡片的I/O电平为低电平,第2至第9个etu时卡片的I/O电平根据传输的数据位进行高低电平的变化,在第11、12个etu时卡片的I/O为电信号发送状态,且卡片的I/O电平根据传输的数据位正确与否保持I/O电平为高电平或低电平。

实施例1

本实施例提供的一种卡片的工作方法,如图1所示,包括以下步骤:

步骤1:卡片上电,向终端返回卡片应答;

步骤2:卡片检测I/O电平,当检测到I/O电平为低电平时,开始接收终端发来的命令头数据;

当卡片在10个etu内接收到1字节的数据时,执行步骤3;

步骤3:卡片判断当前接收到的1字节的数据是否正确,是则执行步骤6,否则执行步骤4;

优选的,卡片将10个etu内传输的第2至第9个比特位数据作为接收到的1字节的数据,将10个etu内传输的第10个比特位数据作为校验位,根据所述校验位验证所述接收到的1字节的数据是否正确。例如,判断第2至第10个etu中传输的比特位为“1”的个数是否为偶数个,是则判断结果为当前正在接收的1字节的数据正确,否则判断结果为当前正在接收的1字节的数据错误。

步骤4:卡片判断当前接收到的1字节的数据是否是命令头的第一个字节,是则执行步骤5,否则执行步骤13;

步骤5:卡片在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,向终端返回预设字节数据,返回执行步骤2;

具体的,卡片在第11、12个etu保持I/O电平为低电平,在下一个etu保持I/O电平为高电平,并以etu为单位向终端返回预设字节数据。

当终端接收到卡片返回的预设字节数据时,终端根据预设字节数据可以确定当前接收数据出错的特定卡片类型,方便终端确定卡片是否被替换,从而防止欺骗交易的发生。

进一步的,本步骤还可以是,卡片在第11、12个etu保持I/O电平为低电平,根据接收到的10个etu中的第2至第9个etu中传输的比特位组成一个字节数据,将得到的一个字节数据作为预设字节数据返回给终端。

例如,向终端返回的预设字节数据为01。

优选的,上述步骤3、步骤4、步骤5还可以替换为如下内容:卡片判断当前正在接收的1字节的数据是否正确,是则执行步骤6,否则执行步骤13。

步骤6:卡片将接收到的1字节的数据记录为命令头的1个字节,在第11、12个etu保持I/O电平为高电平;

具体的,将10个etu中第2至第9个etu中传输的比特位作为接收到的1字节的数据,将所述1字节的数据记录为命令头的一个字节。

步骤7:卡片判断是否接收完长度为5个字节的命令头,是则执行步骤8,否则返回执行步骤2;

具体的,卡片判断当前接收到的命令头的字节的个数是否达到5个,是则表示接收完长度为5个字节的命令头,执行步骤8,否则返回执行步骤2。

步骤8:卡片根据命令头的第二个字节确定命令类型;

例如,若接收到的5个字节的命令头为00A4 00 00 02,根据第二个字节A4确定的命令类型为选择文件命令;

若接收到的5个字节的命令头为00B0 00 00 10,根据第二个字节B0确定的命令类型为读文件命令;

若接收到的5个字节的命令头为00D6 00 00 01,根据第二个字节D6确定的命令类型为更新文件命令。

步骤9:卡片依据所述命令类型判断是否要接收命令数据,是则执行步骤10,否则执行步骤16;

例如,若命令类型为选择文件命令或更新文件命令则需要接收命令数据,若命令类型为读文件命令则不需要接收命令数据。

步骤10:卡片向终端返回接收到的命令头的第二个字节,根据命令头的第五个字节确定命令数据的长度;

例如,接收到的命令头为00A4 00 00 02,则卡片向终端返回A4,根据命令头确定的命令数据的长度为2个字节。

步骤11:卡片检测I/O电平,当检测到I/O电平为低电平时,开始接收终端发来的命令数据;

当卡片在10个etu内接收到1字节的数据时,执行步骤12;

步骤12:卡片判断当前接收到的1字节的数据是否正确,是则执行步骤14,否则执行步骤13;

优选的,卡片判断10个etu中的第2至第10个etu中比特位为“1”的个数是否为偶数个,是则判断结果为当前正在接收的1字节数据正确,否则判断结果为当前正在接收的1字节的数据错误。

步骤13:卡片在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,然后返回执行步骤2;

步骤14:卡片将接收到的1字节的数据记录为命令数据的1个字节,在第11、12个etu保持I/O电平为高电平;

具体的,卡片将10个etu中的第2至第9个etu传输的比特位记录为命令数据的1个字节。

例如,10个etu中第2至第9个etu传输的比特位为00000001,则记录得到的命令数据的1个字节为01。

步骤15:卡片根据所述命令数据的长度判断命令数据是否全部接收完成,是则执行步骤16,否则返回执行步骤11;

具体的,卡片判断当前接收到的命令数据的字节个数是否达到所述命令数据的长度,是则表示全部接收完成,执行步骤16,否则返回执行步骤11。

步骤16:卡片根据命令类型执行相应处理并返回响应数据给终端,然后返回步骤2。

本实施例中,卡片既可以接收标准指令并根据标准指令的类型执行相应处理并返回响应数据给终端,也可以接收非标准指令并执行相应处理以及返回响应数据给终端,从而增强了卡片的兼容性。例如,卡片可以接收的标准指令包括读文件命令、更新文件命令等,卡片可以接收的非标准指令可以包括创建文件命令。

实施例2

本实施例中,针对卡片接收到的命令以及所执行的操作的不同,图1中所示步骤8至步骤16可细化为图2所示内容,具体包括卡片执行以下步骤:

步骤a1:根据命令头的第二个字节确定命令类型;

当命令类型是选择文件命令或更新文件命令时,执行步骤a2;当命令类型是读文件命令时,执行步骤a9;

具体的,判断命令头的第二个字节,若是第一预设值则确定命令类型是选择文件命令,若是第二预设值则确定命令类型是读文件命令,若是第三预设值则确定命令类型是更新文件命令。

进一步的,本步骤还可以包括,当所述命令头的第二字节若是第五预设值则确定命令类型是创建文件命令,执行步骤a2。若是第四预设值则确定命令类型是其他,其中第四预设值满足如下要求:高位起的第2、第3个比特位为1或者高位起的第1、第2个比特位为1。相应的,若所述命令类型是其他则向终端返回接收到的所述命令头的第二个字节,等待终端复位。当等待终端复位时,卡片与终端之间通信中断。

例如,第一预设值为A4,第二预设值为B0,第三预设值为D6,第四预设值为63或93,第五预设值为E0。

步骤a2:向终端返回接收到的命令头的第二个字节,根据命令头的第五个字节确定命令数据的长度;

例如,接收到的命令头为00D6 00 00 01,向终端返回D6,根据命令头确定的命令数据的长度为1个字节。

步骤a3:当检测到I/O电平为低电平时,开始接收终端发来的命令数据;

当卡片在10个etu内接收到1字节的数据时,执行步骤a4;

例如,10个etu内传输的10个比特位数据为0000000000,接收到的1字节的数据为0x00。

步骤a4:判断当前接收到的1字节的数据是否正确,是则执行步骤a6,否则执行步骤a5;

优选的,卡片判断10个etu内的第2至第10个etu中比特位为“1”的个数是否为偶数个,是则判断结果为当前接收到的1字节的数据正确,否则判断结果为当前接收到的1字节的数据错误。

例如,第2至第10个etu中比特位为“1”的个数为0,则本步骤判断结果为当前正在接收的1字节的数据正确。

步骤a5:在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,然后执行图1所示步骤2;

步骤a6:将接收到的1字节的数据记录为命令数据的1个字节,在第11、12个etu保持I/O电平为高电平;

具体的,卡片根据接收到的10个etu中的第2至第9个etu中传输的比特位得到命令数据的一个字节。

例如,接收到的10个etu中的第2至第9个etu中传输的比特位为000000000,则本步骤得到命令数据的一个字节为00。

步骤a7:根据所述命令数据的长度判断命令数据是否全部接收完成,是则执行步骤a8,否则返回执行步骤a3;

例如,命令数据的长度为1个字节,判断当前接收到的命令数据的字节个数是否为1,是则全部接收完成,否则未全部接收完成。

步骤a8:当所述命令类型是选择文件命令时,根据接收到的命令数据确定文件ID,根据文件ID确定当前文件,根据当前文件的文件控制信息(FCI)和表示操作成功的状态字组成响应数据返回给终端;当所述命令类型是更新文件命令时,根据接收到的命令数据更新当前文件的文件内容,将表示操作成功的状态字作为响应数据返回给终端;然后执行图1所示步骤2;

例如,接收到的选择文件命令为00A4 00 00 02 00 01,根据命令数据00 01得到文件ID,根据文件ID确定当前文件,当前文件的FCI为6F17841001020304050607080910111213141516A503880101,表示操作成功的状态字为9000,则返回给终端的响应数据为6F17841001020304050607080910111213141516A503880101 90 00。

所述根据接收到的命令数据更新当前文件的文件内容具体为,根据所述更新文件命令的命令头的第3、4字节确定偏移地址,用所述命令数据更新所述文件内容中与所述偏移地址所对应的数据。

例如,接收到的更新文件命令为00D6 00 00 01 00,当前文件的文件内容为01020304050607080910111213141516,根据命令头的第3、4字节确定的偏移地址为0x0000即文件内容的起始地址,则更新后的文件内容为00020304050607080910111213141516,返回给终端的响应数据为90 00。

进一步的,本步骤还可以包括,当所述命令类型是创建文件命令时,根据接收到的命令数据中包含的文件ID创建文件,并根据表示操作成功的状态字组成响应数据返回给终端。例如,接收到的创建文件命令为80E0000011001500000E0000000000000000FFFFFFFF,则创建文件ID为0015对应的文件的文件内容为00000E0000000000000000FFFFFFFF,返回给终端的响应数据为90 00。

步骤a9:从当前文件中读取文件内容,根据读取的文件内容和表示操作成功的状态字组成响应数据返回给终端,然后执行图1所示步骤2。

具体的,根据所述读文件命令的第3、4字节确定偏移地址,根据所述读文件命令的第5字节确定要读取的文件内容的长度,以所述偏移地址为起始地址,从当前文件的文件内容中读取与所述长度所对应的数据作为读取的文件内容。

优选的,所述当前文件的文件内容为16个字节的数据。

例如,接收到的读文件命令为00B0 00 00 10,当前文件的文件内容为01020304050607080910111213141516,根据读文件命令的第3、4字节确定的偏移地址为0x0000即文件内容的起始地址,根据第5字节确定读取的文件的内容的长度为16,则返回给终端的响应数据为01020304050607080910111213141516 9000。

实施例3

本实施例提供了一种智能卡,本实施例提供的智能卡适用于实施例1和2提供的工作方法,如图3所示,本实施例中所述智能卡(简称卡片)包括第一响应模块101、第一收发模块102、第一判断模块103、第二判断模块104、第二收发模块105、第三判断模块106和第二响应模块107;其中第一收发模块102分别与第一响应模块101、第一判断模块103和第二判断模块104相连,第一判断模块103还与第二响应模块107相连,第二判断模块104分别与第一收发模块102、第一判断模块103、第二收发模块105、第三判断模块106和第二响应模块107相连,第二收发模块105还与第三判断模块103相连,第三判断模块106还与第二响应模块107相连,上述各个组成模块的的功能具体如下:

所述第一响应模块101,用于卡片上电后向终端返回卡片应答,并触发所述第一收发模块102;

所述第一收发模块102,用于收到所述第一响应模块101或第一判断模块103的触发时,检测I/O电平,当检测到I/O电平为低电平时,开始接收终端发来的命令头数据,在10个etu内接收到1字节的数据时,判断当前接收到的1字节的数据是否正确,是则将接收到的1字节的数据记录为命令头数据的1个字节,在第11、12个etu保持I/O电平为高电平,触发第一判断模块103;否则卡片在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,触发第一判断模块103;

所述第一判断模块103,用于收到所述第一收发模块102的触发时,判断所述第一收发模块102是否接收完成所述命令头数据,是则根据所述第一收发模块102接收到的命令头数据确定命令类型,并触发所述第二判断模块104,否则再次触发所述第一收发模块102;

所述第二判断模块104,用于根据所述第一判断模块103确定的所述命令类型判断是否要接收命令数据,是则根据所述第一收发模块102接收到的命令头数据确定要接收的命令数据长度并触发第二收发模块105,否则触发第二响应模块107;

所述第二收发模块105,用于收到所述第二判断模块104或第三判断模块106的触发时,检测I/O电平,当卡片检测到I/O电平为低电平时,开始接收终端发来的命令数据,在10个etu内接收到1字节的数据时,判断当前接收到的1字节的数据是否正确,是则将接收到的1字节的数据记录为命令数据的1个字节,在第11、12个etu保持I/O电平为高电平,触发第三判断模块106;否则在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,触发第三判断模块106;

所述第三判断模块106,用于收到所述第二收发模块105的触发时,根据所述第二判断模块104确定的所述命令数据长度判断所述第二收发模块105是否接收完成所述命令数据,是则触发第二响应模块107,否则再次触发第二收发模块105;

所述第二响应模块107,用于根据所述第一判断模块103确定的所述命令类型执行相应处理并返回响应数据给所述终端。

具体的,本实施例中所述第一收发模块102包括第一验证单元;

所述第一验证单元,具体用于将10个etu内传输的第2至第9个比特位数据作为接收到的1字节的数据,将10个etu内传输的第10个比特位数据作为校验位,根据所述校验位验证所述第一收发模块102当前接收到的1字节的数据是否正确;

本实施例中所述第二收发模块105包括第二验证单元;

所述第二验证单元,具体用于用于将10个etu内传输的第2至第9个比特位数据作为接收到的1字节的数据,将10个etu内传输的第10个比特位数据作为校验位,根据所述校验位验证所述第二收发模块105当前接收到的1字节的数据是否正确。

本实施例中所述第一判断模块103,具体用于判断所述第一收发模块102当前接收到的所述命令头数据的长度是否达到预设长度,是则根据所述命令头数据的第二个字节确定命令类型,并触发所述第二判断模块104,否则再次触发所述第一收发模块102。

本实施例中所述第二判断模块104,具体用于判断所述第一判断模块103确定的所述命令类型是否是预设类型命令,是则根据所述第一收发模块102接收到的命令头数据的第五个字节确定要接收的命令数据长度并触发第二收发模块105,否则触发第二响应模块107。所述预设类型命令包括选择文件命令、更新文件命令和创建文件命令。

进一步的,本实施例中所述第一收发模块102还可以是具体包括检测单元、接收单元、第一判断单元和第二判断单元;

其中,所述检测单元,用于收到所述第一响应模块101或第一判断模块103的触发时,检测I/O电平,当检测到I/O电平为低电平时,触发接收单元;

所述接收单元,用于接收终端发来的命令头数据,每当在10个etu内接收到1字节的数据时,触发第一判断单元;

所述第一判断单元,用于判断所述接收单元当前接收到的1字节的数据是否正确,是则将接收到的1字节的数据记录为命令头的1个字节,在第11、12个etu保持I/O电平为高电平,触发第一判断模块103;否则触发第二判断单元;

所述第二判断单元,用于判断所述接收单元当前接收到的1字节的数据是否为所述命令头数据的第一个字节,是则将接收到的1字节的数据记录为命令头的第一个字节,在第11、12个etu保持I/O电平为高电平,并向终端返回预设字节数据,然后触发第一判断模块103;否则在第11、12个etu保持I/O电平为低电平之后恢复I/O电平为高电平,触发第一判断模块103。所述预设字节数据具体为所述命令头数据的第一个字节。

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

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