一种字符压缩加密方法

文档序号:7855950阅读:287来源:国知局
专利名称:一种字符压缩加密方法
技术领域
本发明属于信息安全保护领域,特别是涉及一种汉子压缩加密方法。
背景技术
随着信息技术的发展,信息传递保密性要求日益增强,无论是数据库安全存储、信息通信、电子商务活动,都迫切需要保证信息安全。网络安全和信息安全已经成为发展信息技术的瓶颈。信息安全问题己经提升到关系信息化建设和发展的核心地位,研究加密算法,使得加密后的信息很难被人找到解密方法,实现非可信公共信道的可信交换或共享数据信息安全存储。ECC (Elliptic Curve Cryptosystems,椭圆曲线密码机制)是目前常用的一类公·钥密码系统,由于椭圆曲线密码在安全性、实现效率和实现代价等方面相对于其它公钥密码系统的优势,它已经得到越来越广泛的应用,与其他公钥加密系统相比有很多优点,除了它可以通过更短的密钥来达到同样的安全强度外,还具有计算负载小,密码尺寸短等优点,并被许多国家和国际标准组织采纳为公钥密码算法标准,但是ECC也存在其不足的地方,其加密和解密操作的实现比其他加密机制花费的时间更长。不同于西文字符只占一个字节,中文字符要占两个字节,每个字节都对应自己ASCII码,一个汉字为二个ASCII码,研究汉字加密的关键为确保对密文的无损还原、汉字信息数值化表示和加密机制的安全易用性,目前大多数的信息加密解密技术都只能应用于如字母、数字、标点符号等单字节字符构成的信息,而缺乏可用于计算机汉字这种双字节字符所构成的信息文件加密的加密体制,并且现有的加密技术缺少具有广泛应用所需的简易性。实际问题中需要保护的中文字符串或中文文档内容,一般都会含有西文字母或符号,还可能存在半角标点符号,这是研究双字节文字加密算法的技术难点,采用ASCII码字符集实现汉字的数字化,对实现密文的无损还原是困难的,还原时单字节的西文是I个字节对应I个字形,而双字节的汉字则是2个字节对应I个字形,如果把本应单字符对应的I个ASCII码按双字节完成转换,或把对应汉字的两个字节做了单字节变换,都会使还原后的信息出现乱码或错误,出现密文的有损还原或错误还原。

发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种应用范围广、安全性能更高的汉字压缩加密方法。为实现上述目的,本发明提供了一种字符压缩加密方法,其特征在于包括以下步骤步骤一、将待加密的字符转换成Unicode字符集对应的区位码;区位码由区码和位码组成;步骤二、将步骤一得到的各区码和位码均转换成7位二进制数,当所述区码或位码转换成二进制数不足7位时,在所述区码或位码的高位前补加“O”,直到所述区码或位码转换成的二进制数均为7位;步骤三、将各区位码的二进制数按字符顺序依次合并排列;步骤四、判断合并后的二进制数串中二进制码的个数是否为16的整数倍;当合并后的二进制数串中二进制码的个数不是16的整数倍时,在合并后的二进制数串中二进制码的末尾补加“0”,直到所述合并后的二进制数串中二进制码的为16的倍数;步骤五、在合并后的二进制数串中依次截取16位二进制数,并将其转换成字符。由于步骤四中需要在合并后的二进制数串中二进制码的末尾补加“0”,较佳的,还包括快速计算缺零数的步骤;所述缺零数与步骤四中所述合并后的二进制数串中二进制码的个数之和为16的整数倍;
Al、计算T=16- (2X7XN)modl6,T为缺零数,N为字符个数,T彡0,Ν为正整数;Α2、在在合并后的二进制数串中二进制码的末尾补加T个“O”。由于能够快速的计算出需要加“O”的个数,提高了工作效率。相应的,还包括对加密后的字符进行解密的步骤;所述对加密后的字符进行解密的步骤按以下步骤进行BI、将加密后的字符转换成对应的第一二进制码串;Β2、从步骤BI得到的二进制串中依次截取14位二进制数,将截取后不足14位的
二进制数舍去得到第二二进制码串;Β3、在所述第二二进制码串中依次将每7位二进制数转换成十进制数串;Β4、将所述十进制数串依次转换成Unicode字符集对应的字符。较佳的,将待加密的字符转换成Unicode字符集对应的区位码后还包括采用椭圆曲线密码机制对字符的区位码进行加密的步骤Cl、首先构建Weierstrass方程Y2 = X3+aX+b (modP),其中P为素数,a和b均为小于P的非负整数,4a3+27b2 Φ 0,在有理数域上定义椭圆曲线EP(a,b),在所述椭圆曲线Ep(a, b)上取一个素数阶为η的点G,在区间[1,η_1]中选取一个私有密钥k来计算出公有密钥Q,Q=kXG, k为正整数,其中G、P、Q均为公有密钥。C2、设定字符转换后的区位码为H,H= (x0, y0),H e EP, X0为字符对应的区码,yQ为字符对应的位码的密文Ch= (C1, C2),其中C1=H+ω XQ, C2= ω Xk, ω为随机选取的正整数且ω e Ep-1, C2为公有密钥,C1为字符的区位码密文,C1 = Cx1, Y1), X1是区码对应的密文,Y1是位码对应的密文。由于加入了椭圆加密运算,实现了信息的双重加密,对信息的加密强度更高,大大的提高了安全性,相应的,对椭圆曲线密码机制加密后的字符的区位码进行解密有如下步骤D1、将步骤B3得到的十进制数串,依次截取2组数字;分别对应所述X1和Y1 ;D2、使用私有密钥k进行解密运算;计算CrkXC2,得到H= (x0, y0);D3、X0为字符对应的区码,y0为字符对应的位码,将Xtl和I0按照Unicode字符集转换成对应的字符。本发明的有益效果是本发明本文所采用的方法实现简单,能同时实现汉字、字母、数字等进行安全加密,且易于实现,由于具有比其它现有的汉字加密算法更好的抗攻击性能,且经过加密后的信息体积更小,能够实现密文的无损还原。


图I是本发明实施例一的结构示意图。图2是本发明实施例二的结构示意图。图3是本发明实施例三的结构示意图。图4是本发明实施例提到的示例文字及其对照Unicode UTF-16字符集的区位码的示意图。
具体实施方式

下面结合附图和实施例对本发明作进一步说明实施例一如图I所示,一种字符压缩加密方法,包括以下步骤步骤一、将待加密的字符转换成Unicode UTF-16字符集对应的区位码;步骤二、将步骤一得到的各区码和位码均转换成7位二进制数,当所述区码或位码转换成二进制数不足7位时,在其高位前补加“0”,直到所述区码或位码转换成的二进制数均为7位;步骤三、将各区位码的二进制数按字符顺序依次合并排列;步骤四、判断合并后的二进制数串中二进制码的个数是否为16的整数倍;当合并后的二进制数串中二进制码的个数不是16的整数倍时,在合并后的二进制数串中二进制码的末尾补加“0”,直到所述合并后的二进制数串中二进制码的为16的倍数;步骤五、在合并后的二进制数串中依次截取16位二进制数,并将其转换成Unicode UTF-16字符集对应的字符。步骤六、对压缩加密后的字符进行压缩解密的步骤;所述对加密后的字符进行解密的步骤按以下步骤进行BI、将加密后的字符转换成对应的第一二进制码串;B2、从步骤BI得到的二进制串中依次截取14位二进制数,将截取后不足14位的
二进制数舍去得到第二二进制码串;B3、在所述第二二进制码串中依次将每7位二进制数转换成十进制数串;B4、将所述十进制数串依次转换成Unicode UTF-16字符集对应的字符。实施例二 如图2所示,本实施例的流程与实施例一基本相同,所不同的是还包括快速计算缺零数的步骤;所述缺零数与步骤四中所述合并后的二进制数串中二进制码的个数之和为16的整数倍;Al、计算T=16- (2X7XN)modl6,T为缺零数,N为字符个数,Τ30,Ν为正整数;Α2、在在合并后的二进制数串中二进制码的末尾补加T个“O”。实施例三如图3所示,本实施例的流程与实施例二基本相同,所不同的是将待加密的字符转换成Unicode UTF-16字符集对应的区位码后还包括采用椭圆曲线密码机制对字符的区位码进行加密的步骤,相应的,还包括对椭圆曲线密码机制加密后的字符区位码进行解密的步骤。首先构建Weierstrass方程Y2 = X3+aX+b (modP),其中P为素数,a和b均为小于P的非负整数,4a3+27b2古O,在有理数域上定义椭圆曲线Ep (a,b ),在所述椭圆曲线Ep (a,b )上取一个素数阶为η的点G,在区间[I, η-I]中选取一个私有密钥k来计算出公有密钥Q,Q=kXG,k为正整数,其中G、P、Q均为公有密钥。C2、设定字符转换成的区位码为H,H= (x0, y0),H e EP, X0为字符对应的区码,yQ为字符对应的位码的密文Ch= (C1, C2),其中C1=H+ω XQ, C2= ω Xk, ω为随机选取的正整数且ω e Ep-1, C2为公有密钥,C1为字符的区位码密文,C1 = Cx1, Y1), X1是区码对应的密文,Y1是位码对应的密文。
由于加入了椭圆加密运算,实现了信息的双重加密,对信息的加密强度更高,大大的提高了安全性,相应的,还包括对椭圆曲线密码机制进行解密有如下步骤D1、将步骤B3得到的十进制数串,依次截取2组数字;分别对应所述X1和Y1 ;D2、使用私有密钥k进行解密运算;计算CrkXC2,得到H= (x0, y0);D3、X。为字符对应的区码,y0为字符对应的位码,将X。和yQ按照Unicode UTF-16字符集转换成对应的字符。为了对本发明进行验证,取p=97,a=0, b=_4,由此取得椭圆群E97 (0,-4),它由y2=x3-4椭圆曲线的部分点组成,选择椭圆曲线E97 (0,-4)上一点G= (2,2),该点属于E97的Abel群,可满足nG=0的最小整数为n=31,则η是基点(2,2)的阶,在区间[1,30]上选取随机数 k=9,计算 Q=KG,得到 Q=9 (2,2)= (27,-52),其中 k=9 为私钥,G= (2,2)、Q= (27,-52)及P=97为公钥,设定待加密的汉字为“重”,将“重”字按Unicode UTF-16字符集转换成对应的区位码,H= (54,56),其中54为“重”字的区码、56为“重”字的位码,随机选取正整数ω=3,计算 C1 与 C2jC1 = Η+ω XQ= (54,56) + 3Χ (27,-52)= (54,56) + (88,-25)= (20,57),其中X1 = 20是区码对应的密文,yi = 57是位码对应的密文,C2=GJ XG=3X (2,2)= (1,26),C2为公钥。同理对“重庆电子工程职业学院”加密处理过程如下如图4所示,“重庆电子工程职业学院”的区位码依次为(54,56)、(39,76)、(21,71)、(55,51)、(25,04)、(19,44)、(54,16)、(50,21)、(49,07)和(52,26),依次把每个汉字的区码和位码作为H= (x0,y0)坐标值代入公式C1 = Η+ω XQ,就可以计算出每个汉字密文,然后把所有得到的密文依次连接起来得到的密文为CH= (20,57,34,78,06,74,49,41,85,78,88,25,48,11,40,69,49,90,23,38)。将经过椭圆加密运算后得到的字符串区位码密文Ch= (20,57,34,78,06,74,49,41,85,78,88,25,48,11,40,69,49,90,23,38)进一步加密,把每一个加密后的区位码数值都转换成2进制数,其中[1,63]之间的十进制数对应的二进制数不足7位,需要在高位前面补“0”,确保每一个区码或位码都是7位二进制数表示,然后依次把所有二进制数都组合到一起,得到(00101000111001011100110011100000110100101001100010101001101010110011101011000001100101100000001011010100010001010110001101101000101110100110),计算需要保护的汉字二进制位串的总长度为2*7*N,N=10,可计算τ=16-(2*7*10)modl6,T=4,既在二进制数串的串尾补4个“0”,确保传输报文的总长度为16位的整数倍,得到新的二进制编码(001010001110010111001100111000001101001010011000101010011010101100111010110000011001011000000010110101000100010101100011011010001011101001100000),进一步将新的二进制位串转化为字符,显示为“B &K ft葦寘+)"',,,此时原字符串加密后的密文已经是面目全非的乱码,并且把10个汉字压缩成9个乱码显示,实现了把汉字转换密文存储的二级加密目的,其安全性能更好。相应的,需要对压缩加密文件进行解密计算,对加密后的字符串“B&K ft葦寘+々”,按照Unicode UTF-16字符集将各字符转换为对应的区位码,并进一步将得到的区位码转换为二进制编码,即(001010001110010111001100111000001101001010011000101010011010101100111010110000011001011000000010110101000100010101100011011010001011101001100000),然后将加密时末尾补足的“0000”舍去,得到(00101000111001,01I10011001I10,00001101001010,01100010101001,10101011001110,10110000011001,01100000001011,01010001000101,01100011011010,00101110100110),其中每 14 位二进制编码中高7位是字符区码的二进制密文,低7位是字符位码的密文,再把二进制密文转换为10进制数,即可得到由十进制表示的区位码(20、57,34、78,06、74,49、41,85、78,88、25,48、11,40、69,49、90,23、38)。依次截取两位压缩解密后的十进制区位码,将其作为C1的坐标值,使用私钥 k=9 对其进行解密运算,计算 H=CfkC2, H=CfkC2=QO, 57) + [-9X (I, 26)] = (20, 57) +[-(88,-25)] = (20,57) + (88,25) = (54, -41) = (54, 56),其中 54 就是得到的明文汉字“重”字的区码,56就是得到的明文汉字“重”字的位码,同理,依次对(20、57,34、78,06、74,49、41,85、78,88、25,48、11,40、69,49、90,23、38)进行椭圆解密可得到(54、56,39,76, 21,71, 55、51,25,04, 19,44, 54,16, 50,21, 49,07, 52,26),依次将两位十进制数作为区位码并对应Unicode UTF-16字符集转换成明文字符,椭圆解密过程结束。对算法正确性的推理如下CfkC2=H+ω Q-k ( ω G) =H+ ω (kG)-k ( ω G) =H+ ω(kG) -ω (kG) =Η,根据以上推理可知H=CfkC2该算法满足计算的正确性,即采用汉字的区码与位码代替H点的Xtl与Y0坐标取值,使加解密计算方便快捷。汉字信息的加密,主要靠对汉字文档或报文的加密来实现,也就是把要存储到数据库中或要在网上传输的保护内容,用汉字信息加密算法生成密文的过程。本发明建立的字符压缩加密方法,对处理英文信息、数字信息或混编信息均实用有效,混编信息是指要保护的信息中同时含有汉字、英文、数字和符号复合内容。本发明能实现对信息的双重加密,具有极闻的安全性。以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
权利要求
1.ー种字符压缩加密方法,其特征在于包括以下步骤 步骤一、将待加密的字符转换成Unicode字符集对应的区位码; 步骤ニ、将步骤一得到的各区码和位码均转换成7位ニ进制数,当所述区码或位码转换成ニ进制数不足7位时,在其高位前补加“0”,直到所述区码或位码转换成的ニ进制数均为7位; 步骤三、将各区位码的ニ进制数按字符顺序依次合并排列;判断合并后的ニ进制数串中二进制码的个数是否为16的整数倍;当合并后的ニ进制数串中二进制码的个数不是16的整数倍时,在合并后的ニ进制数串中二进制码的末尾补加“0”,直到所述合并后的ニ进制数串中二进制码长为16的倍数; 步骤四、在合并后的ニ进制数串中依次截取16位ニ进制数,并将其转换成字符。
2.如权利要求I所述的ー种字符压缩加密方法,其特征是还包括快速计算缺零数的步骤;所述缺零数与步骤四中所述合并后的ニ进制数串中二进制码的个数之和为16的整数倍; Al、计算T=16- (2X7XN) modl6, T为缺零数,N为字符个数,T彡0,N为正整数; A2、在在合并后的ニ进制数串中二进制码的末尾补加T个“O”。
3.如权利要求I或2所述的ー种字符压缩加密方法,其特征是还包括对加密后的字符进行解密的步骤;所述对加密后的字符进行解密的步骤按以下步骤进行 BI、将加密后的字符转换成对应的第一ニ进制码串; B2、从步骤BI得到的ニ进制串中依次截取14位ニ进制数,将截取后不足14位的ニ进制数舍去得到第二ニ进制码串; B3、在所述第ニニ进制码串中依次将每7位ニ进制数转换成十进制数; B4、将所述十进制数依次转换成Unicode字符集对应的字符。
4.如权利要求3所述的ー种字符压缩加密方法,其特征是将待加密的字符转换成Unicode字符集对应的区位码后还包括采用椭圆曲线密码机制对字符的区位码进行加密的步骤。
5.如权利要求4所述的ー种字符压缩加密方法,其特征是还包括对椭圆曲线密码机制加密后的字符区位码进行解密的步骤。
全文摘要
本发明公开了一种字符压缩加密方法,属于信息安全保护领域,通过将文字转换成对应unicode字符集的区位码,并将该区位码转换成二进制编码,然后对所述二进制编码进行补“0”操作,最后转换成新的字符,同时还可以先对待加密的信息进行椭圆加密,本发明所采用的方法实现简单,能同时实现汉字、字母、数字等进行安全加密,且易于实现,由于具有比其它现有的汉字加密算法更好的抗攻击性能,且经过加密后的信息体积更小,能够实现密文的无损还原。
文档编号H04L9/32GK102761418SQ201210244448
公开日2012年10月31日 申请日期2012年7月16日 优先权日2012年7月16日
发明者王俊峰, 王姗 申请人:重庆电子工程职业学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1