二维码的安全应用方法及编解码***
技术领域
本发明涉及信息安全及自动识别领域,尤其涉及一种能兼容国际标准的二维码的安全应用方法及基于该二维码的编码、解码***。
背景技术
二维码是在一维条码的基础上发展出的一种具有可读性的条码。设备扫描二维条码,通过识别条码的长度和宽度中所记载的二进制数据,可获取其中所包含的信息。相比一维条码,二维码能够记载更复杂的数据,比如各种文字、密钥、图片、网络链接、二进制数据等。
二维码作为优秀的自动识别技术被广泛普及应用在税务、飞机票、火车票、广告媒体等领域,甚至手机都可以用来读取。然而,在某些行业及应用环境下,其编码信息暴露,可能会给整个应用体系带来隐患。比如高铁火车票透露个人姓名及身份证号码等个人信息,会造成公众的安全恐慌。在金融、物流、管理行业等领域更是如此。因此,安全的缺失严重阻碍了二维码技术的应用。
目前,用户选择二维码应用时,虽然采用公开的国际二维码标准提供的公***解决方案多、普及高,但是不够安全。因此,金融、政府、军队、部分企业对于使用这种二维码有很大的顾虑,从而限制了二维码在一些环境中的使用。对此问题,目前的解决方案是,部分用户会花费大量精力、时间、资金重新创造一套私有二维码来使用。目前虽然国际标准已经有不到8种二维码码制,但已知的私码已经多达200多种。中国自主二维码国家标准有1种,但私***制有不下10种,还有不断增加的趋势。私码在一定程度上,造成了用户识别的混乱,也不利于普及和推广。
发明内容
本发明的目的是提供一种具有安全性的国际标准二维码(以下简称“安全二维码”)码制应用方法,能够兼顾并解决公***信息被第三方任意读取获得而产生的保密性问题,和私有二维码无法广泛传递信息两个方面的问题,以进一步推动二维码应用的普及。
根据本发明的一个方面,提供了一种兼容国际标准的安全二维码的应用方法,包括
S1:获取非保密的数据信息;
S2:对所述数据信息进行编码,生成明码数据;
S3:对所述明码数据添加保密数据,形成混合数据;
S4:将所述混合数据一起编码,生成二维码符号。
在上述方式中,还包括对混合数据中的保密数据添加权限名和密钥,然后进行编码以生成二维码符号。
在一些实施方式中,所述数据信息包括文本、静态网页、二进制数据;和/或所述数据信息编码形成二维码符号;和/或所述码制采用国际标准及非标准二维码码制,QR码或汉信码。
在一些实施方式中,步骤S3中,所述明码数据段段后设置有明码数据终止符,所述保密数据数据段段前设置有保密数据起始符。
在一些实施方式中,所述明码数据与所述保密数据一起编码。
相应地,本发明提供了基于二维码编码方法的***,***包括:
数据获取模块,用以获取数据信息;
数据编码模块,用以将数据信息进行编码,生成明码数据,再在明码数据中添加保密数据,最终将明码数据与保密数据一起编码,生成二维码符号。
在一些实施方式中,数据信息包括文本、静态网页、动态网页、音频以及视频;和/或数据信息编码形成二维码符号;和/或码制采用大容量二维码,QR码或汉信码。
在一些实施方式中,数据编码模块在明码数据段段后设置明码数据终止符,和/或数据编码模块还包括保密数据编码单元,在保密数据数据段段前设置保密数据起始符。
在一些实施方式中,数据编码模块还包括保密数据编码单元,将保密数据通过MD5算法进行加密,根据国际二维码规范规则将公开的数据信息、加密后的数据、权限名和密钥一起生成相应的二维码符号。
相应的,本发明提供了基于二维码解码方法的***,***包括:
数据获取模块,用以获取包含数据信息的二维码符号;
数据分析模块,对获取的二维码符号进行分析,获取编码模式信息;
数据解码模块,对二维码符号进行解码,获得二维码符号内的数据信息。
在一些实施方式中,数据解码模块还包括保密数据解码单元,根据国际二维码规范规则将二维码符号解译为要公开的数据信息、加密后的数据、权限名和密钥,然后将加密后的数据通过MD5算法进行解密。
在一些实施方式中,数据解码模块包括用户权限确定单元,根据用户的权限名和密钥,确定获得加密数据信息或是只解码出明码数据。
根据本发明的上述技术方案,可以将用户要公开的数据信息和想要保密的数据信息一起生成具有安全性的二维码。一种具体的实现方式可以是将要保密的信息通过MD5算法进行加密,然后再根据国际二维码规范规则将要公开的数据信息、加密后的数据、权限名和密钥一起生成相应的二维码符号。
根据上述方法,安全二维码中的***息可以通过市场上购买的各种支持标准的二维码读取机具读取,并且这种设备仅能够看到要公开的信息。
相应地,根据本发明的安全二维码的解码***可获取隐藏的二维码信息,并根据用户的权限名和密钥,获得加密字符串,再经过MD5算法进行解密,获得除***息之外的加密信息。
在实施中可以使用装有安全二维码解码算法的二维码识读装置构成安全二维码读取装置。
本发明是基于编码***的二维码符号,允许普通用户使用市场上的标准二维码读取设备读取二维码的***息,而不希望被看到的信息则无法读取,即便是关于加密的信息也是标准二维码读取设备所不能识别的。而对拥有权限的用户,可以通过使用支持本发明的解码算法的设备看到保密信息等更多的信息。
附图说明
图1为本发明一实施方式的二维码的安全应用方法流程示意图;
图2为本发明一实施方式的二维码安全应用方法中数据组成结构示意图;
图3为本发明一实施方式的二维码编码***的模块示意图;
图4为本发明一实施方式的二维码解码***的模块示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述说明。
图1至图2示意性地显示了根据本发明的一种实施方式的一种兼容国际标准的安全二维码的应用方法,包括:
S1:获取数据信息;
S2:对所述数据信息进行编码,生成明码数据;
S3:在所述明码数据中添加保密数据;
S4:将所述明码数据与所述保密数据一起编码,生成二维码符号。
在步骤S1中,数据信息可以包括文本、静态网页、动态网页、音频以及视频。当发送数据方需要发送包含数据的数据信息时,对要发送的包含数据的数据信息进行分析。根据不同的数据信息种类,确定编码模式。如对于数据信息中包含的数字信息,采用数字编码模式;对于数据信息中同时包含的字母和数字信息,采用混合编码模式,如QR码。
确定编码模式之后,确定采用的编码码制版本号,并且将明码数据编码模式和明码数据计数位信息在明码数据的数据段段前进行标示。标示出的明码数据编码模式和明码数据计数位信息用以在解码过程中,告知解码器采用相应的解码模式和解码数据位对明码数据进行解码。在本发明的实施方式中,采用QR码作为编码码制。
在步骤S2中,确定编码模式和编码码制版本号之后,对要发送的数据信息采用QR码进行编码,生成明码数据。当获得了明码数据之后,判定是否存在保密数据,若保密数据不存在,则转至步骤S4,直接对明码数据进行编码生成二维码符号。若保密数据存在,则进入步骤S3。
在步骤S3中,如图2所示,编码器检测到需要发送的数据信息中包含保密信息时,则在明码数据末端加入明码数据终止符,明码数据终止符用以标示明码数据编码结束。明码数据终止符的作用在于,当解码器在解码过程中解码到明码数据终止符时,表明明码数据终止,解码器将终止对明码数据解码。
在明码数据末端加上明码数据终止符后,在明码数据终止符后加上保密数据起始符,保密数据起始符用以标示保密数据的起始位置。保密数据起始符的作用在于,在解码器解码过程中,当解码到保密数据起始符,则表明保密数据起始符后的数据段数据为保密数据。加入保密数据起始符后,采用相应的编码模式和编码数据位开始对保密数据进行编码。并且将保密数据模式和保密数据计数位的数据信息,设置于保密数据起始符的段后,其后面是用户的权限名和密钥,然后是保密数据数据段。保密数据编码完成后,在保密数据数据段段后***保密数据终止符,标示保密数据段结束。保密数据终止符的作用在于,当解码器在解码过程中编译到保密数据终止符时,终止对保密数据解码。加入保密数据终止符后终止对保密数据的编码。
如图2所示,编码结束后完整的数据组成结构包括明码数据编码模式、明码数据计数位、明码数据、明码数据终止符、保密数据起始符、保密数据编码模式、保密数据计数位、用户的权限名和密钥、保密数据以及保密数据终止符。
获得完整数据段后,对数据段进行纠错编码,纠错编码的功能是保证现***字充足的冗余,以便在解码过程中即使二维码符号有一定的缺失也能解码出需要的数据。在纠错编码完成后,构造完整的数据最终信息。在二维码符号的矩阵中布置模块,然后进行掩模步骤的处理。完成掩模步骤后最终加入格式和版本信息,最终完成整个编码过程,生成二维码符号。上述纠错编码、构造信息、布置模块和掩模都属于常规二维码编码过程中的通用步骤,并非本发明技术方案涉及范围,在此不再赘述。
下面示例说明本发明一种实施方式的兼容国际标准的安全二维码的应用方法。例如:输入的原始数据为01234567(8个字符),需要保密的数据为345(3个字符)。根据原始数据和保密数据都为数字,采用数字编码模式,由于原始数据字符数为8,保密数字字符数为3,总的数字字符数为11,再根据保密数据起始符和终止符所占的位数,本编码示例选取编码版本为1-H。将原始数据分为三组,一组为012,二组为345,三组为67,对每组数据分别由十进制转换为二进制,得到一组为0000001100,二组为0101011001,三组为1000011。三组二进制数按照顺序拼接得到完整明码数据段,即0000001100 0101011001 1000011。明码数据字符数为8,转换为二进制为1000,又因为版本1-H的字符计数指示符的位数为10位,转换为二进制后补足位数,则明码数据计数位即0000001000。最后加入明码数据编码模式指示符0001以及明码数据计数位,则得到了完整的明码数据段,即0001 0000001000 0000001100 0101011001 1000011。
然后对保密数据进行编码,保密数据为345,与编码明码数据相似,分为长度为3的一组数据,并转换为二进制,即0101011001。保密数据字符数为3,转换为二进制位0011,版本1-H的字符计数指示符位数为10位,转换为二进制后补足位置,则保密数据计数位即0000000011。最后加入保密数据模式指示符0001以及保密数据计数位,则得到了完整的保密数据数据段,即0001 0000000011 0101011001。随后可对此保密数据段进行加密,用户的权限名和密钥添加于此保密数据段前。按照图2所示的完整数据组成结构示意图,在本发明的该实施方式中,设定明码数据终止符为0000(4位),设定保密数据起始符为1011(4位),设定保密数据终止符为0000(4位),最终得到本实施例的完整数据组成结构为(此示例保密数据没有加密且不包括用户的权限名和密钥):0001 0000001000 0000001100 0101011001 1000011 0000 1011 00010000000011 0101011001 0000。值得一提的是,根据发送方和接收方的具体需要,可以根据每次传输的需要,设定单次传输的二维码中的明码数据终止符,保密数据起始符以及保密数据终止符,以提高本发明方法所生成的二维码的保密性和安全性。
根据本发明的另一方面,还提供了一种二维码编码***。
图3示意性地显示了根据本发明的一种实施方式的二维码编码***。如图所示,该***包括编码数据获取模块10、数据编码模块20、编码数据纠错模块30以及数据掩模模块40。当编码数据获取模块10接收到数据信息时,数据编码模块20对接收到的数据信息进行分析,确定采用的编码码制版本号,对要发送的数据信息采用QR码进行编码,生成明码数据。数据编码模块20还包括保密数据编码单元和保密数据编码单元。保密数据编码单元在保密数据数据段段前设置保密数据起始符。保密数据编码单元将保密数据通过MD5算法进行加密,根据国际二维码规范规则将公开的数据信息、加密后的数据、权限名和密钥一起生成相应的二维码符号。当获得了明码数据之后,判定是否存在保密数据,若保密数据不存在,则对获得的明码数据进行编码生成二维码符号。若保密数据存在,则在明码数据末端加入明码数据终止符,明码数据终止符的作用在于,当解码器在解码过程中解码到明码数据终止符时,表明明码数据终止,解码器将终止对明码数据编码。
在明码数据末端加入明码数据终止符后,在明码数据终止符后加上保密数据起始符,保密保密数据起始符用以标示保密数据的起始位置。保密数据起始符的作用在于,在解码器解码过程中,当解码到保密数据起始符,则表明保密数据起始符后的数据段数据为保密数据。加入保密数据起始符后,采用相应的编码模式和编码数据位开始对保密数据进行编码。并且将保密数据模式和保密数据计数位的数据信息,设置于保密数据起始符的段后,其后面是用户的权限名和密钥,然后是保密数据数据段。保密数据编码完成后,在保密数据数据段段后***保密数据终止符,标示保密数据段结束。保密数据终止符的作用在于,当解码器在解码过程中编译到保密数据终止符时,终止对保密数据解码。加入保密数据终止符后终止对保密数据的编码。
编码数据纠错模块30对码字序列分块,然后按块生成纠错码字,并将其加入到相应的数据码字序列后面。然后构造最终信息并在矩阵中布置模块。数据掩模模块对获得的符号的编码区域进行掩模操作。
根据本发明的另一方面,还提供了一种二维码解码***。
图4示意性地显示了根据本发明的一种实施方式的二维码解码***。如图所示,该***包括解码数据获取模块100、数据分析模块200、数据恢复模块300、解码数据纠错模块400、数据解码模块500以及数据输出模块600。当解码数据获取模块100接收到包含数据信息的二维码符号时,数据分析模块200对接收到的二维码符号进行分析,获取所述二维码符号,识别二维码符号中的编码模式信息,识别出二维码符号深浅模块,并对格式信息进行译码,得到二维码符号格式信息,从中获取明码数据和保密数据的编码模式以及编码码制版本号信息等。
在确定编码码制版本后,数据恢复模块300针对编码过程中的掩模步骤,相应地进行消除掩模的操作,再对编码过程中对数据段的构造信息进行还原。解码数据纠错模块400对数据段进行常规的错误检查,若字段没有错误就转至数据解码模块500,若字段出现错误,则对错误字段进行纠错,还原并得到包含了明码数据和保密数据的完整数据段。
数据解码模块还包括保密数据解码单元和用户权限确定单元。保密数据解码单元根据国际二维码规范规则将二维码符号解译为要公开的数据信息、加密后的数据、权限名和密钥,并将加密后的数据通过MD5算法进行解密。用户权限确定单元根据用户的权限名和密钥确定获得加密数据信息或是只解码明码数据。得到包含了明码数据和保密数据的完整数据段后,数据解码模块500对完整的数据段进行解码。根据数据分析模块200获取的数据编码模式和数据编码码制版本号,对明码数据和保密数据一起解码。按照完整数据段的顺序,先对明码数据进行解码。数据解码模块500读取明码数据起始符,则判定开始解码明码数据,根据明码数据起始符段后的明码数据编码模式和明码数据计数位,开始对明码数据进行解码。当数据解码模块500编译至明码数据终止符时,则终止明码数据解码并判定数据段中是否含有保密数据,若不包含保密数据,则数据输出模块600直接输出解码结果,若包含保密数据,则执行下一步骤。
数据解码模块500根据用户的权限名和密钥,获得加密字符串,进行解密,获得加密数据;如果未收到用户权限名和密钥,或收到的用户权限名和/或密钥与所得到的数据段中包含的相应内容不一致时,则停止对加密数据的解码,从而只解码出明码数据。数据解码模块500读取到保密数据起始符,则判定包含保密数据,并开始对保密数据进行解码。读取保密数据起始符数据段段后的保密数据编码模式和保密数据计数位,并按照保密数据编码模式和保密数据计数位中的信息对保密数据进行解码。数据解码模块500将保密数据通过MD5算法进行解密,根据国际二维码规范规则将二维码符号解译为要公开的数据信息、加密后的数据、权限名和密钥。用户通过二维码读取设备输入权限名和密钥,该输入的权限名和密钥需要与二维码中保存的权限名和密钥进行比较,以确定是否有权限进行解密保密数据。如有权限,则对加密的保密数据进行读取和解码。当数据解码模块500读取并解码至保密数据终止符时,则判定保密数据解码过程结束。明码数据和保密数据解码完成后,数据输出模块600将完成的明码数据和保密数据一起输出。
使用过程中,发送方和接收方可以根据相互之间的习惯或者协定,来设定单次传输编解码过程中的具体参数,包括明码数据计数位、明码数据终止符、保密数据起始符、保密数据计数位、保密数据终止符,并且将这些参数加入到二维码解码***中,这样增加了单次编解码过程的安全性。
应当理解,虽然本说明书按照实施例加以描述,但并非每个实施例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施例。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施例的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明的等效实施例或变更均应包含在本发明的保护范围之内。