基于文本压缩的二维码生成、读取方法及生成、读取装置与流程

文档序号:12068117阅读:341来源:国知局
基于文本压缩的二维码生成、读取方法及生成、读取装置与流程
本发明属于防伪二维码生成
技术领域
,尤其是涉及一种基于文本压缩的二维码生成、读取方法及生成、读取装置。
背景技术
:二维码是用某种特定的几何图形按照一定的规律在平面上分布的黑白相间的图形记录数据符号的信息,自80年代诞生以来二维码的技术逐步成熟,按照不同的编码方式的二维码有:PDF417、QRCode、DataMatrix、MaxiCode等。而其中QR二维码是最为常见且应用最为广泛的二维码。QR二维码作为现在十分流行的信息传播载体,在当今社会中已经得到了较为广泛的应用。由于传统的二维码在信息保护方面不强,极易被仿造和复制,尤其在一些较为重要商品信息的流通过程中此问题更为突出。因此针对二维码的防伪问题,国内外学者提出了不同的加密方案。目前已有的防伪二维码加密技术主要是基于DES算法的加密和基于AES算法的加密方法,但这两种方法的加密和解密都需要相同的私匙从而为数据的传输增加的不必要的成本,因此基于RSA算法的非对称防伪加密技术则成为近来的研究热点。将RSA加密算法和QR二维码进行结合使用密匙将信息数据转化成不可直接读取的密文从而形成一种有效的产品防伪技术,这不仅在帮助企业高效地预防和打击市场上的假冒伪劣产品同时更为有效的保护消费者的相关权益提供了技术的支持。RSA算法是一种较为有代表性的非对称加密算法,而且得到了较为广泛的研究和应用。然而随着近年来各种解密技术的发展和分解大整数能力的日益增强,为了保证RSA加密体制的安全性总是不断增加模长。目前768bit模长的RSA体制已经不再那么安全,一般采用1024bit或2048bit的模长体制才能保证信息的安全性,但与此同时增大模长体制的加密方式也使得产生的密文长度不断增加。当密文过长这不仅增加了密文传输的成本而且基于密文产生防伪二维码的效率也极为低下。本发明采用易于实现的文本压缩技术来改善RSA加密防伪二维码的生成效率问题。技术实现要素:为了弥补上述二维码在文本压缩加密效率低下,提高文本压缩加密效率,本发明提出一种基于文本压缩的二维码生成、读取方法及生成、读取装置。其技术方案为,一种基于文本压缩的防伪二维码生成方法,其包括:为二维码生成器内加装RSA加密模块和BWT变换模块;采用生成器将明文信息采用RSA算法加密成密文,将密文通过BWT变换模块压缩生成二维码输出;上述明文信息加密过程包括,将明文字符代入me≡c(modn)中生成密文c,所述m代表明文字符,所述me≡c(modn)表示m的e次方除以n余数为c,所述n和e为公钥;所述公钥的生成步骤包括:随机选择两个不相等的强素数p和q;计算p和q的乘积n;通过欧拉公式计算n的欧拉函数φ(n),欧拉公式φ(n)=(p-1)(q-1);随机选择一个整数e,e满足1<e<φ(n),且e与φ(n)互质;计算e对于φ(n)的模反元素d;将n和e封装成公钥(n,e),并将(n,d)封装为私钥发送给二维码扫码器。进一步的,所述模反元素的计算方法为:ed≡1(modφ(n)),d代表可以使得ed被φ(n)除的余数为1的整数,该公式等价于ed-1=kφ(n),k为任意整数。进一步的,所述BWT变换压缩步骤包括:将密文字符串C的每个字符都右移一位,得到字符矩阵G;将生成的字符矩阵G以行为单位按照字典中顺序进行排序形成新的矩阵Q;选取矩阵Q的最后一列;对L列字符采用游程编码方式进行压缩。一种基于文本压缩的防伪二维码读取方法,包括:为二维码扫码器内加装RSA解密模块和BWT还原模块;采用扫码器从二维码中读取出二维码信息,将二维码信息通过BWT还原模块解压缩成密文,然后将密文通过RSA解密模块解密输出;所述密文解密的解密过程包括,将密文信息代入cd≡m(modn)得到密文c的明文m,所述cd≡m(modn)表示c的d次方除以n的余数为m,所述n和d为私钥;所述私钥的生成步骤包括:随机选择两个不相等的强素数p和q;计算p和q的乘积n;通过欧拉公式计算n的欧拉函数φ(n),欧拉公式φ(n)=(p-1)(q-1);随机选择一个整数e,e满足1<e<φ(n),且e与φ(n)互质;计算e对于φ(n)的模反元素d;将n和d封装成私钥(n,d),将(n,e)作为公钥发送给二维码生成器。进一步的,所述模反元素的计算方法为:ed≡1(modφ(n)),d代表可以使得ed被φ(n)除的余数为1的整数,该公式等价于ed-1=kφ(n),k为任意整数。进一步的,所述BWT还原模块解压缩步骤包括:将读取的压缩数据根据游程编码规则还原成字符串L;将字符串L按照字典顺序排序得到排序后的字符串F;将F和L作为字符矩阵的第一列和最后一列恢复矩阵Q;将矩阵第一行作为还原后的信息输出。一种基于文本压缩的防伪二维码生成装置,所述装置包括:输入组件,用于将明文信息输入;转换组件,用于将明文信息转换为字符串;加密组件,用于将字符串采用RSA算法加密生成密文;BWT变换组件,用于采用BWT变换以及游程编码方式将密文进行压缩;编码组件,用于将压缩后的密编译成二维码输出。所述输入组件,转换组件,加密组件,压缩组件和编码组件依次连接到一起。所述输入组件包括扫描器和与扫描器连接的OCR识别器。一种基于文本压缩的防伪二维码读取装置,包括:扫描模块,用于扫描二维码信息;BWT还原模块,用于将二维码信息通过BWT算法解压缩还原成密文;解密模块,用于将密文信息通过RSA算法解密成明文字符串;还原模块,用于将明文字符串还原成明文信息;输出模块,用于将明文信息输出;所述扫描模块、所述BWT还原模块、所述解密模块、所述还原模块和所述输出模块依次连接到一起。防伪二维码生成过程中密文信息的大小直接影响着二维码的生成效率,然而因为加密方式的不同,对密文信息的处理目前还没有一种系统的、统一的解决方案。现有方案也有各种局限性,同一种方案针对不用的应用场景表现的效果也不尽一致。本发明针对RSA加密的防伪二维码的生成效率低下的问题,借鉴文本压缩的经验,提出了对密文进行压缩减少要写入的信息量从而改进防伪二维码的生成效率,提升系统的整体性能。附图说明图1为本发明二维码加密方法的一种实施方式的流程示意图;图2为本发明二维码加密的另一种实施方式的流程示意图;图3为本发明二维码解密方法的一种实施例的流程示意图;图4为本发明二维码生成装置的一种实施例的结构框型图;图5为本发明二维码读取装置的一种实施例的结构框型图。具体实施方式下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。结合图1,本发明的一种实施方式。一种基于文本压缩的防伪二维码生成方法,包括:为二维码生成器内加装RSA加密模块和BWT变换模块;采用生成器将明文信息采用RSA算法加密成密文,将密文通过BWT变换模块压缩生成二维码输出;上述明文信息加密过程包括,将明文字符代入me≡c(modn)中生成密文c,所述m代表明文字符,所述me≡c(modn)表示m的e次方除以n余数为c,所述n和e为公钥;所述公钥的生成步骤包括:随机选择两个不相等的强素数p和q;计算p和q的乘积n;通过欧拉公式计算n的欧拉函数φ(n),欧拉公式φ(n)=(p-1)(q-1);随机选择一个整数e,e满足1<e<φ(n),且e与φ(n)互质;计算e对于φ(n)的模反元素d,所谓模反元素即有一个整数d,可以使得ed被φ(n)除的余数为1,其公式为ed≡1(modφ(n)),该公式等价于ed-1=kφ(n),将n和e封装成公钥(n,e)并(n,d)封装为私钥发送给二维码扫码器。所述模反元素的计算方法为:ed≡1(modφ(n)),d代表可以使得ed被φ(n)除的余数为1的整数,该公式等价于ed-1=kφ(n),k为任意整数。参照图2,在加密过程中的BWT变换压缩步骤包括:将密文字符串C的每个字符都右移一位,得到字符矩阵G;将生成的字符矩阵G以行为单位按照字典中顺序进行排序形成新的矩阵Q;选取矩阵Q的最后一列;对L列字符采用游程编码方式进行压缩。结合图3,一种基于文本压缩的防伪二维码读取方法,包括:为二维码扫码器内加装RSA解密模块和BWT还原模块;采用扫码器从二维码中读取出二维码信息,将二维码信息通过BWT还原模块解压缩成密文,然后将密文通过RSA解密模块解密输出;所述密文解密的解密过程包括,将密文信息代入cd≡m(modn)得到密文c的明文m,所述cd≡m(modn)表示c的d次方除以n的余数为m,所述n和d为私钥;所述私钥的生成步骤包括随机选择两个不相等的强素数p和q;计算p和q的乘积n;通过欧拉公式计算n的欧拉函数φ(n),欧拉公式φ(n)=(p-1)(q-1);随机选择一个整数e,e满足1<e<φ(n),且e与φ(n)互质;计算e对于φ(n)的模反元素d,所谓模反元素即有一个整数d,可以使得ed被φ(n)除的余数为1,其公式为ed≡1(modφ(n)),该公式等价于ed-1=kφ(n);封装公钥将n和d封装成私钥(n,d),将(n,e)作为公钥发送给二维码生成器。所述模反元素的计算方法为:ed≡1(modφ(n)),d代表可以使得ed被φ(n)除的余数为1的整数,该公式等价于ed-1=kφ(n),k为任意整数。所述BWT还原模块解压缩步骤包括:将读取的压缩数据根据游程编码规则还原成字符串L;将字符串L按照字典顺序排序得到排序后的字符串F;将F和L作为字符矩阵的第一列和最后一列恢复矩阵Q;将矩阵第一行作为还原后的信息输出。本发明采用RSA算法进行信息的加密处理。RSA算法自1978年产生以来经历几十年的考验,逐渐成为非对称加密技术中的主要的运用技术。随着二维码技术的逐渐成熟和流行,在商业活动中运用二维码进行防伪得到越来越广泛的重视,而RSA非对称的加密算法以其良好的安全性和稳定性逐渐成为二维码加密防伪的主要方式。RSA算法是由三位麻省理工学院的学者于20世纪80年代共同提出的。他们的名字为R.Rives、A.Shamir、L.Adleman。RSA为三人姓氏首字母组成。它的原理相当的简单,其实就是找尽可能大的质数,两个质数相乘得积很容易,但是要从一个很大的乘积中把两个质数分解出来是相当的困难,所以它把乘积公开作为加密密钥。所述RSA算法的加密流程包括,生成公钥和私钥,利用公钥对明文信息进行加密。以下对公钥和私钥生成过程进行举例说明。随机选择两个不相等的强素数p和q,如61和53(为了方便计算和说明,本次举例采用数值较底的素数,实际应用中,一般正常加密数值相对都比较大);计算p和q的乘积n,n=pq=61*53=3233,n(3233)就是密钥长度。3233(n)写成二进制是110010100001,一共有12位,所以这个密钥就是12位,实际应用中,RSA密钥一般是1024位,重要场合则为2048位;通过欧拉公式计算n的欧拉函数φ(n),欧拉公式φ(n)=(p-1)(q-1)得φ(3233)等于(61-1)*(53-1)=3120;随机选择一个整数e,条件是1<e<φ(n),且e与φ(n)互质,由φ(n)=3120得到e的列表,本次选取17;计算e对于φ(n)的模反元素d,所谓模反元素即有一个整数d,可以使得ed被φ(n)除的余数为1,其公式为:ed≡1(modφ(n)),该公式等价于ed-1=kφ(n),找模反元素d,实质上就是对ed+φ(n)k=1求解,代入e=17,φ(n)=3120,可以得到17d+3120k=1,得到多组d和k的解,本次选取(d,k)=(2753,-15),即d=2753;封装公钥和私钥,将n和e封装成公钥(n,e),n和d封装成私钥(n,d),得到公钥(3233,17),私钥(3233,2753);至此,所述RSA算法的公钥和私钥都以计算完成。所述加密模块的加密过程采用公式me≡c(modn),把数值m加密成密文字符c,所述公式代表m的e次方除以n余数为c,将上述公钥(3233,17)代入公式,假设需要加密的文字为65,得到6517=2790(mod3233)得到m的密文字符2790.所述解密模块的解密过程采用cd≡m(modn),即c的d次方除以n的余数为m。由c等于2790,私钥是(3233,2753),得到27902753≡65(mod3233),解密出密文c的原文m为65。只根据公钥(n,e),要计算出解密密钥d的难度不亚于大数分解的难度分解的难度。因此,任何人都可对明文进行加密,但只有具有相应授权密匙的用户才可对密文解密,所以整个RSA加密算法具有相当高的安全性。RSA是目前最有影响力的公匙加密算法,它能抵抗到目前为止已知的绝大多数密码攻击,然而随着科技和理论的发展RSA也面临着挑战,由于RSA的安全性极度依赖于大数的分解为了保证安全性随着密匙的长度不断增长加密后的信息长度也成倍增长,因此如何处理不断增长的密文信息提升后续操作对密文的处理效率问题将在很大程度上影响RSA算法的应用范围。随着社会科技的发展,从数据中获取知识和情报已成为当前人们的共识。然而数据信息量的指数增长,对数据的存储和传输提出了更高的要求。因此无论是数据压缩的基本理论还是压缩技术成为当今研究的热点前沿。而文本压缩技术则成为数据压缩技术中主要的研究方向。文本压缩的目的就是用尽可能少的的数码来表达原始的信息数据,因此将文本压缩技术来对加密信息进行处理,将很好的提升对密文的后续处理效率。本发明专利通过BWT变换对后续进行压缩。压缩技术主要的工作方式就是找到重复的模式,进行紧密的编码,而RSA加密后的密文为大量的数字字符,其字符串的重复率非常高,采用BWT变换的方式可以有效对数字字符串进行压缩。BWT是MikeBurrows依据DavidWheeler提出的变换思想,经过研究和和完善并应用于数据压缩的变换方法。其基本的原理如下:对给定N个字符的输入字符串序列信息依次进行移位的操作,将偏移操作得到的所有可能的置换结果字符序列组合,能够构成了一个N*N的字符矩阵,然后,将字符矩阵按照字典编纂原理重新排序,得到这个新的N*N的字符矩阵并保存新的字符矩阵的最后一列字符串。将原来的文本转换为一个相似的文本,转换后使得相同的字符位置连续或者相邻,从而为之后的数据压缩提供方便。将加密后的密文原始序列经过BWT转换后,可以更方便的进行压缩;而且BWT转换是一个可逆的转换,能够根据转换后的序列还原出原始序列。BWT转换首先将序列进行在序列的末尾插入一个字符,并且规定按照字典序的排序的话,这个字符小于序列中的任意字符。比如原始序列“banana”,为其末尾增加一个字符变成“banana#”然后对字符串进行循环右移,生成位移后的字符矩阵,如表1中“RotateRight”列表。然后将矩阵的首列字母按照字典顺序进行排序(如果是数字字符则按照由小到大进行排序),得到结果参照表1“Sorted(M)”列表。从排序后的矩阵中选出第一列(First列)和最后一列(Last列)。得到L列的第一个字符就是原始序列的最后一个字符(因为#小于任意字符);F列的每一个字母是对应的L列的后一个字符(因为循环右移);得到字符x在L列中出现的第i次对应F列中的第i个字符;比如L列中第7行的a是第3次出现的a,它对应的就是F列中的第3行的a。NO.RotateRightSorted(M)FL1banana##banana#a2#bananaa#bananan3a#bananana#banan4na#banaanana#bab5ana#banbanana#b#6nana#bana#banana7anana#bnana#bana表1表2在实际压缩储存的时候,只储存L列,然后采用游程编码进行压缩,如表1中L列为annb#aa压缩后得到a1n2b1#a2(本举例由于字符较少压缩效果不明显)。在恢复的时候由于F的序列可以从L中排序得来,如表1压缩后得到a1n2b1#a2得到L列,排序后为#aaabnn,即得到F列,然后根据F列和L列恢复字符矩阵,然后选取矩阵第一行,即用#号开头的一行即为还原后的信息。结合图4,一种基于文本压缩的防伪二维码生成装置,所述装置包括:输入组件,用于将明文信息输入;转换组件,用于将明文信息转换为字符串;加密组件,用于将字符串采用RSA算法加密生成密文;BWT变换组件,用于采用BWT变换以及游程编码方式将密文进行压缩;编码组件,用于将压缩后的密编译成二维码输出。所述输入组件,转换组件,加密组件,压缩组件和编码组件依次连接到一起。所述输入组件包括扫描器和与扫描器连接的OCR识别器。参照图5,一种基于文本压缩的防伪二维码读取装置,包括:扫描模块,用于扫描二维码信息;BWT还原模块,用于将二维码信息通过BWT算法解压缩还原成密文;解密模块,用于将密文信息通过RSA算法解密成明文字符串;还原模块,用于将明文字符串还原成明文信息;输出模块,用于将明文信息输出;所述扫描模块、所述BWT还原模块、所述解密模块、所述还原模块和所述输出模块依次连接到一起。下边结合具体的加密方式,对本发明做进一步说明。本发明的本次实验是由配置为Intel酷睿双核2.1GHz,4G内存,320G硬盘,win7操作系统的计算机作为测试平台,以JAVA语言为基础,以eclipse为开发工具,采用尺寸为256X256容错等级为L级的二维码进行测试和验证。实验方法和结果本实验采用512bit,1024bit,2048bit的不同密匙长度分别对长度为10,20,30的随机序列号各自进行100次实验测试,统计传统RSA算法生成二维码的时间和改进之后的生成时间,并对比实验结果。如表1所示。从实验结果来看,改进后的防伪二维码生成方法在同条件下比传统的防伪二维码生成时间缩短的将近40%,而且随着信息数据的增大,二维码的生成效率也得到相应的提升,说明本发明所采用的文本压缩生成二维码的方式可以有效的改善传统防伪二维码的生成效率。具体如下表所示防伪二维码生成过程中密文信息的大小直接影响着二维码的生成效率,然而因为加密方式的不同,对密文信息的处理目前还没有一种系统的、统一的解决方案。现有方案也有各种局限性,同一种方案针对不用的应用场景表现的效果也不尽一致。本发明针对RSA加密的防伪二维码的生成效率低下的问题,借鉴文本压缩的经验,提出了对密文进行压缩减少要写入的信息量从而改进防伪二维码的生成效率,提升系统的整体性能。上述技术方案仅体现了本发明技术方案的优选技术方案,本
技术领域
的技术人员对其中某些部分所可能做出的一些变动均体现了本发明的原理,属于本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1