专利名称:一种支持非对齐数据的对称加解密方法及其系统的制作方法
技术领域:
本发明涉及网络安全技术领域,尤其涉及一种支持非对齐数据的对称加解密方法及其系统。
背景技术:
对称加密算法是应用较早的加密算法,技术成熟。对称加密算法中,数据发信方将明文和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解密原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,加/解密密钥是相同的。对称加密算法中常用分组算法,典型的分组长度为64位,这个长度大到足以防止分析破译,但又小到足以方便使用。传统的对称加密算法在加解密时,支持对8字节整数倍数据加解密。对称加密算法采用分组算法时,要求明文数据必须是8字节的整数倍,如果明文数据不足8字节整数倍,系统填充多余的数据至8字节整数倍,然后再进行加密运算,产生密文数据输出。对称加密算法对非8字节整数倍明文数据,填充多余的数据直至达到8字节整数倍,明文数据中包含有多余的没有意义的数据,填充字节用的无意义数据,增加了数据传输的负担,对于存储空间有限的系统,侵占了有意义数据的存储空间,减少了有效 目息的存储量。对于发送带宽有限的系统,无效信息增加了系统的带宽占用量。
发明内容
本发明的目的在于提出一种支持非对齐数据的对称加解密方法及其系统,能够避免加密时填充无意义的字节。为达此目的,本发明采用以下技术方案一种支持非对齐数据的对称加密方法,包括S1、加密前对数据按照预设长度进行分组;S2、判断最后一个分组的长度与所述预设长度是否相等,若是,则将所有的分组按照对称加密算法直接加密,否则顺序执行步骤S3、S4 ;S3、除最后一个分组外,对各分组数据按照对称加密算法进行加密;S4、取倒数第二个分组的密文的末尾的长度等于预设长度减最后一个分组的长度的内容,后接上最后一个分组明文一起按照对称加密算法加密获取新密文,将该新密文的末尾长度等于最后一个分组的长度的内容作为最后一个分组的密文,用该新密文的首部的长度等于预设长度减最后一个分组的长度的内容替换倒数第二个分组密文的末尾的长度等于预设长度减最后一个分组的长度的内容。进一步地,所述预设长度为8字节。进一步地,所述对称加密算法为DES加密算法、TripleDES加密算法、AES-128加密算法、AES-192加密算法或AES-256加密算法。对应地,本发明提出了一种支持非对齐数据的对称解密方法,包括S1、对密文数据接照加密时的预设长度进行分组;S2、判断最后一个分组的长度与所述加密时的预设长度是否相等,若是,则将所有分组的密文按照加密算法对应的解密算法进行对称解密,否则,顺序执行步骤S3、S4 ;S3、从原始密文数据末尾取出长度等于加密时的预设长度的数据,将所述密文按照加密算法对应的解密算法进行对称解密获取明文,该明文末尾的长度等于最后一个分组的长度的内容即为最后一个分组的解密内容,用该明文的首部长度等于加密时的预设长度减最后一个分组的长度的内容替换倒数第二个分组密文的尾部的长度等于加密时的预设长度减最后一个分组的长度的内容;
S4、除最后一个分组外,对各分组密文按照加密算法对应的解密算法进行对称解
r I I O根据本发明的同一构思,本发明还提出了一种支持非对齐数据的对称加密系统,包括分组模块,用于加密前对数据按照预设长度进行分组,当最后一个分组的长度与所述预设长度相等时,调用对齐数据加密模块,否则调用非对齐数据加密模块;对齐数据加密模块,用于当最后一个分组的长度与预设长度相等时,对数据按照对称加密算法进行加密;非对齐数据加密模块,用于当最后一个分组的长度与预设长度不相等时,除最后一个分组外,对各分组数据按照对称加密算法进行加密,取倒数第二个分组的密文的末尾的长度等于预设长度减最后一个分组的长度的内容,后接上最后一个分组明文一起按照对称加密算法加密获取新密文,将该新密文的末尾长度等于最后一个分组的长度的内容作为最后一个分组的密文,用该新密文的首部的长度等于预设长度减最后一个分组的长度的内容替换倒数第二个分组密文的末尾的长度等于预设长度减最后一个分组的长度的内容。进一步地,所述预设长度为8字节。进一步地,所述对称加密算法为DES加密算法、TripleDES加密算法、AES-128加密算法、AES-192加密算法或AES-256加密算法。对应地,本发明还提出了一种支持非对齐数据的对称解密系统,包括分组模块,对密文数据接照加密时的预设长度进行分组,当最后一个分组的长度与所述预设长度相等时,调用对齐数据解密模块,否则调用非对齐数据解密模块;对齐数据解密模块,用于当最后一个分组的长度与所述预设长度相等时,将所有分组的密文按照加密算法对应的解密算法进行对称解密;非对齐数据解密模块,用于当最后一个分组的长度与所述预设长度不相等时,用于从原始密文数据末尾取出长度等于加密时的预设长度的数据,将所述密文按照加密算法对应的解密算法进行对称解密获取明文,该明文末尾的长度等于最后一个分组的长度的内容即为最后一个分组的解密内容,用该明文的首部长度等于加密时的预设长度减最后一个分组的长度的内容替换倒数第二个分组密文的尾部的长度等于加密时的预设长度减最后一个分组的长度的内容,除最后一个分组外,对各分组密文按照加密算法对应的解密算法进行对称解密。
本发明支持非对齐数据的对称加密,避免了填充无意义的字节数,能减轻数据传输负担,能减少数据的存储空间,能降低对网络带宽的占用。
图1是本发明实施例一所述的支持非对齐数据的对称加密方法流程图;图2(a)是本发明所述的加密示意图;图2(b)是本发明所述的解密示意图;图3是本发明实施例一所述的支持非对齐数据的对称解密方法流程图;图4是本发明实施例二所述的支持非对齐数据的对称加密系统结构框图; 图5是本发明实施例二所述的支持非对齐数据的对称解密系统结构框图。
具体实施例方式下面结合附图并通过具体实施方式
来进一步说明本发明的技术方案。实施例一图1是本发明实施例一所述的支持非对齐数据的对称加密方法流程图,如图1所示,本实施例所述的支持非对齐数据的对称加密方法包括S101、对数据按照预设长度L进行分组;所述预设长度L优选为8字节,这个长度大到足以防止分析破译,但又小到足以方
便使用。图2(a)是本发明所述的加密示意图,如图2 (a)所示,例如,非对齐数据加密前,先按照规则分组,每8字节为一组,划分为BlockO,Blockl,…,Blockn,最后一组数据为PR。S102、判断最后一个分组的长度S与所述预设长度L是否相等,若是则执行步骤S103,否则执行步骤S104 ;例如,最后一组数据为PR,长度为Len=n。若最后一组数据PR长度n=所述预设长度L,则执行步骤S103,否则执行步骤S104。S103、将所有的分组按照对称加密算法直接加密,结束;例如,若最后一组数据PR长度n=所述预设长度8,则将所有的分组按照对称加密算法直接加密,数据BlockO加密后变成一CBlockO,数据Blockl加密后变成一CBlockl,数据Blockn加密后变成一CBlockn,数据PR加密后变成一CBlockPR0本发明的数据加密,对整个加密文件来说,是支持非对齐数据的对称加密,但是对具体分组的加密方法与对齐数据加密方法相同,加密算法可为DES加密算法、TripleDES加密算法、AES-128加密算法、AES-192加密算法或AES-256加密算法。S104、对除最后一个分组外的各分组数据按照对称加密算法进行加密;例如,若最后一组数据PR长度n〈所述预设长度8,则先对除最后一个分组外的各分组数据按照对称加密算法进行加密,数据BlockO加密后变成一CBlockO,数据Blockl加密后变成一CBlockl,数据Blockn加密后变成一CBlockn。S105、重构一个分组内容,按照对称加密算法进行加密,提取最后一个分组的密文,修改倒数第二个分组的密文,结束。例如,若最后一组数据PR长度n〈所述预设长度8,则最后一组数PR的加密过程比较特殊,数据PR不足8字节,假定长度Len=n,数据PR需要补充到8字节后才能加密。数据PR补充数据的来源是已经加密的数据块CBlockn,假定提取m字节数据,m=8_n,需要从CBlockn数据块中提取m字节数据。提取规则为从CBlockn数据块尾部提取m字节数据,补充到PR数据块的前面,合成长度Len=m+n的数据Block(pr)。Block(pr)数据块的组成为=CBlockn的后m字节数据+PR的n字节数据加密后数据存储规则Block (pr)数据块加密后生成CBlock (pr)数据块。Block (pr) — CBlock (pr)。CBlock (pr)数据块的前m字节再返回给CBlockn数据,作为CBlockn数据块的后m字节,CBlock (pr)数据块加密后只保存后n字节数据。至此,完成了对所有分组数据的加密。可见,明文数据和加密后的密文数据长度一样。加密后的数据为CBlockO, CBlockl,…CBlockn, CBlock(pr)后n字节数据。对应地,本实施例所述的支持非对齐数据的对称加密方法,对应的解密方法,如图3所示,包括 S301、对密文数据按照加密时的预设长度L进行分组;图2(b)是本发明所述的解密示意图,如图2(b)所示,例如,加密时的预设长度L为8字节,解密过程密文数据按8字节分组,划分为CBlockO,CBlockl, CBlockn,CBlock(pr)。解密从最后一个数据块CBlock(pr)数据块开始,CBlock(pr)解密后获取明文数据Block (pr),Block (pr)数据块的数据需要经过变换处理。S302、判断最后一个分组的长度S与加密时预设长度L是否相等,若是则执行步骤S303,否则执行步骤S304 ;例如,若最后一个分组CBlock (pr)长度为n,如果n=加密时预设长度8,则执行步骤S303,否则执行步骤S304。S303、将所有分组的密文按照加密算法对应的解密算法进行对称解密,结束;例如,如果最后一个分组CBlock (pr)长度n=加密时预设长度8,则将所有分组的密文按照对齐数据解密算法进行对称解密。 S304、从原始密文尾部取出长度为L的数据,解密该数据获取明文R,从R截取最后一个分组的原始明文,修改倒数第二个分组;例如,如果最后一个分组CBlock(pr)长度n〈加密时预设长度8,则进行如下操作从原始密文尾部取出长度为8的数据作为最后一个分组Block(pr)的密文,SPBlock (pr)的前m字节作为当前CBlockn的后m字节,CBlockn的前面字节保持不变,可见,Block (pr)数据块的前m字节是从CBlockn数据块借用的,CBlockn数据块需要重新变换后才能参与解密,变换的过程就是解密数据CBlockn获取明文R,从R截取后n字节数据就是明文PR数据块,用明文R截取后剩下的内容,即R前面的8-n个字节内容,用该内容替换倒数第二个分组密文的最后的8-n个字节内容。S305、对除最后一个分组的其他分组的密文按照加密算法对应的解密算法进行对称解密,结束。最后,对除最后一个分组外,对各分组密文按照对齐数据解密算法进行对称解密。至此,完成了对所有分组数据的解密。
实施例二根据本发明的同一构思,本发明还提供了一种支持非对齐数据的对称加密系统和解密系统,图4是本发明实施例二所述的支持非对齐数据的对称加密系统结构框图,如图4所示,本实施例所述的支持非对齐数据的对称加密系统包括分组模块用于加密前对数据按照预设长度L进行分组,当最后一个分组的长度S与所述预设长度L相等时,调用对齐数据加密模块,否则调用非对齐数据加密模块;所述预设长度L优选为8字节,这个长度大到足以防止分析破译,但又小到足以方便使用。图2(a)是本发明所述的加密示意图,如图2 (a)所示,例如,非对齐数据加密前,先按照规则分组,每8字节为一组,划分为BlockO,Blockl,…,Blockn,最后一组数据为PR。若最后一组数据PR长度n=所述预设长度L,调用对齐数据加密模块,否则调用非对齐数据加密模块。对齐数据加密模块,用于当最后一个分组的长度S与预设长度L相等时,对数据按照对称加密算法进行加密;例如,若最后一组数据PR长度n=所述预设长度8,则将所有的分组按照对称加密算法直接加密,数据BlockO加密后变成一CBlockO,数据Blockl加密后变成一CBlockl,数据Blockn加密后变成一CBlockn,数据PR加密后变成一CBlockPR0本发明的数据加密,对整个加密文件来说,是支持非对齐数据的对称加密,但是对具体分组的加密方法与对齐数据加密方法相同,加密算法可为DES加密算法、TripleDES加密算法、AES-128加密算法、AES-192加密算法或AES-256加密算法。非对齐数据加密模块,用于当最后一个分组的长度S与预设长度L不相等时,除最后一个分组外,对各分组数据按照对称加密算法进行加密,取倒数第二个分组的密文的最后的L-S个字节,后接上最后一个分组明文一起按照对称加密算法加密获取新密文T,将该新密文T的后S个字节作为最后一个分组的密文,用该新密文T的前L-S字节内容替换倒数第二个分组密文的最后的L-S个字节内容。 例如,若最后一组数据PR长度n〈所述预设长度8,则先对除最后一个分组外的各分组数据按照对称加密算法进行加密,数据BlockO加密后变成一CBlockO,数据Blockl加密后变成一CBlockl,数据BI ockn加密后变成一CBlockn。对最后一组数PR的加密过程比较特殊,数据PR不足8字节,假定长度Len=n,数据PR需要补充到8字节后才能加密。数据PR补充数据的来源是已经加密的数据块CBlockn,假定提取m字节数据,m=8-n,需要从CBlockn数据块中提取m字节数据。提取规则为从CBlockn数据块尾部提取m字节数据,补充到PR数据块的前面,合成长度Len=m+n的数据Block (pr)。Block (pr)数据块的组成为CBlockn的后m字节数据+PR的n字节数据加密后数据存储规则Block (pr)数据块加密后生成CBlock (pr)数据块。Block (pr) — CBlock (pr)。CBlock (pr)数据块的前m字节再返回给CBlockn数据,作为CBlockn数据块的后m字节,CBlock (pr)数据块加密后只保存后n字节数据。至此,完成了对所有分组数据的加密。可见,明文数据和加密后的密文数据长度一样。加密后的数据为CBlockO, CBlockl,…CBlockn, CBlock(pr)后n字节数据。对应地,本实施例所述的支持非对齐数据的对称加密系统,对应的解密系统,如图5所示,包括分组模块,对密文数据接照加密时的预设长度L进行分组,当最后一个分组的长度S与所述预设长度L相等时,调用对齐数据解密模块,否则调用非对齐数据解密模块;图2(b)是本发明所述的解密示意图,如图2(b)所示,例如,加密时的预设长度L为8字节,解密过程密文数据按8字节分组,划分为CBlockO,CBlockl, CBlockn,CBlock(pr)。解密从最后一个数据块CBlock(pr)数据块开始,CBlock(pr)解密后获取明文数据Block (pr),Block (pr)数据块的数据需要经过变换处理。若最后一个分组CBlock (pr)长度为n,如果n=加密时预设长度8,则调用对齐数据解密模块,否则调用非对齐数据解密模块。 对齐数据解密模块,用于当最后一个分组的长度S与预设长度L相等时,将所有分组的密文按照对齐数据解密算法进行对称解密;例如,如果最后一个分组CBlock (pr)长度n=加密时预设长度8,则将所有分组的密文按照对齐数据解密算法进行对称解密。非对齐数据解密模块,用于当最后一个分组的长度S与预设长度L不相等时,用于从原始密文数据尾部取出长度为预设长度L的数据,将所述密文按照对齐数据解密算法进行对称解密获取明文R,该明文R的后S个字节即为最后一个分组的明文,用该明文R的前L-S字节内容替换倒数第二个分组密文的最后的L-S个字节内容,除最后一个分组外,对各分组密文按照对齐数据解密算法进行对称解密。例如,如果最后一个分组CBlock(pr)长度n〈加密时预设长度8,则进行如下操作从原始密文尾部取出长度为8的数据作为最后一个分组Block(pr)的密文,SPBlock (pr)的前m字节作为当前CBlockn的后m字节,CBlockn的前面字节保持不变,可见,Block (pr)数据块的前m字节是从CBlockn数据块借用的,CBlockn数据块需要重新变换后才能参与解密,变换的过程就是解密数据CBlockn获取明文R,从R截取后n字节数据就是明文PR数据块,用明文R截取后剩下的内容,即R前面的8-n个字节内容,用该内容替换倒数第二个分组密文的最后的8-n个字节内容。最后,对除最后一个分组外,对各分组密文按照对齐数据解密算法进行对称解密。至此,完成了对所有分组数据的解密。本发明所述的技术方案支持非对齐数据的对称加解密,避免了填充无意义的字节数,能减轻数据传输负担,能减少数据的存储空间,能降低对网络带宽的占用。以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如计算机中的硬盘、光盘或软盘。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种支持非对齐数据的对称加密方法,其特征在于,包括51、加密前对数据按照预设长度进行分组;52、判断最后一个分组的长度与所述预设长度是否相等,若是,则将所有的分组按照对称加密算法直接加密,否则顺序执行步骤S3、S4 ;53、除最后一个分组外,对各分组数据按照对称加密算法进行加密;54、取倒数第二个分组的密文的末尾的长度等于预设长度减最后一个分组的长度的内容,后接上最后一个分组明文一起按照对称加密算法加密获取新密文,将该新密文的末尾长度等于最后一个分组的长度的内容作为最后一个分组的密文,用该新密文的首部的长度等于预设长度减最后一个分组的长度的内容替换倒数第二个分组密文的末尾的长度等于预设长度减最后一个分组的长度的内容。
2.如权利要求1所述的支持非对齐数据的对称加密方法,其特征在于,所述预设长度为8字节。
3.如权利要求1所述的支持非对齐数据的对称加密方法,其特征在于,所述对称加密算法为DES加密算法、TripleDES加密算法、AES-128加密算法、AES-192加密算法或 AES-256加密算法。
4.一种支持非对齐数据的对称解密方法,其特征在于,包括51、对密文数据接照加密时的预设长度进行分组;52、判断最后一个分组的长度与所述加密时的预设长度是否相等,若是,则将所有分组的密文按照加密算法对应的解密算法进行对称解密,否则,顺序执行步骤S3、S4 ;53、从原始密文数据末尾取出长度等于加密时的预设长度的数据,将所述密文按照加密算法对应的解密算法进行对称解密获取明文,该明文末尾的长度等于最后一个分组的长度的内容即为最后一个分组的解密内容,用该明文的首部长度等于加密时的预设长度减最后一个分组的长度的内容替换倒数第二个分组密文的尾部的长度等于加密时的预设长度减最后一个分组的长度的内容;54、除最后一个分组外,对各分组密文按照加密算法对应的解密算法进行对称解密。
5.一种支持非对齐数据的对称加密系统,其特征在于,包括分组模块,用于加密前对数据按照预设长度进行分组,当最后一个分组的长度与所述预设长度相等时,调用对齐数据加密模块,否则调用非对齐数据加密模块;对齐数据加密模块,用于当最后一个分组的长度与预设长度相等时,对数据按照对称加密算法进行加密;非对齐数据加密模块,用于当最后一个分组的长度与预设长度不相等时,除最后一个分组外,对各分组数据按照对称加密算法进行加密,取倒数第二个分组的密文的末尾的长度等于预设长度减最后一个分组的长度的内容,后接上最后一个分组明文一起按照对称加密算法加密获取新密文,将该新密文的末尾长度等于最后一个分组的长度的内容作为最后一个分组的密文,用该新密文的首部的长度等于预设长度减最后一个分组的长度的内容替换倒数第二个分组密文的末尾的长度等于预设长度减最后一个分组的长度的内容。
6.如权利要求5所述的支持非对齐数据的对称加密系统,其特征在于,所述预设长度为8字节。
7.如权利要求6所述的支持非对齐数据的对称加密系统,其特征在于,所述对称加密算法为DES加密算法、TripleDES加密算法、AES-128加密算法、AES-192加密算法或 AES-256加密算法。
8.一种支持非对齐数据的对称解密系统,其特征在于,包括分组模块,对密文数据接照加密时的预设长度进行分组,当最后一个分组的长度与所述预设长度相等时,调用对齐数据解密模块,否则调用非对齐数据解密模块;对齐数据解密模块,用于当最后一个分组的长度与所述预设长度相等时,将所有分组的密文按照加密算法对应的解密算法进行对称解密;非对齐数据解密模块,用于当最后一个分组的长度与所述预设长度不相等时,用于从原始密文数据末尾取出长度等于加密时的预设长度的数据,将所述密文按照加密算法对应的解密算法进行对称解密获取明文,该明文末尾的长度等于最后一个分组的长度的内容即为最后一个分组的解密内容,用该明文的首部长度等于加密时的预设长度减最后一个分组的长度的内容替换倒数第二个分组密文的尾部的长度等于加密时的预设长度减最后一个分组的长度的内容,除最后一个分组外,对各分组密文按照加密算法对应的解密算法进行对称解密。
全文摘要
本发明公开了一种支持非对齐数据的对称加解密方法及其系统,加密方法包括S1、对数据按照预设长度L进行分组,记录最后一个分组的长度S;S2、判断最后一个分组的长度S与L是否相等,若是,则将所有的分组直接加密,否则执行步骤S3;S3、除最后一个分组外,对各分组数据进行加密;S4、取倒数第二个分组的密文的最后的L-S个字节,同最后一个分组明文一起加密获取新密文,将倒数第二个分组密文的最后的L-S个字节替换为该新密文的前面L-S个字节,将该新密文的最后S个字节作为最后一个分组的密文。本发明支持非对齐数据的对称加密,避免了填充无意义的字节数,能减轻数据传输负担,减少数据的存储空间,降低对网络带宽的占用。
文档编号H04L9/06GK103001766SQ20121048743
公开日2013年3月27日 申请日期2012年11月26日 优先权日2012年11月26日
发明者宁艳芝, 王天星, 王文军, 李伟东, 李红艳 申请人:北京视博数字电视科技有限公司