一种基于可逆逻辑电路的AES的本地文件加密方法与流程

文档序号:11681049阅读:389来源:国知局
一种基于可逆逻辑电路的AES的本地文件加密方法与流程

本方法涉及信息技术领域,特别是一种基于可逆逻辑电路的aes的本地文件加密方法。



背景技术:

一、aes算法

高级加密标准(英语:advancedencryptionstandard,缩写:aes)是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的des,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(nist)于2001年11月26日发布于fipspub197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

aes的区块长度固定为128比特,密钥长度则可以是128,192或256比特。大多数aes计算是在一个特别的有限域完成的。

aes加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个byte)。加密时,各轮aes加密循环(除最后一轮外)均包含4个步骤:

addroundkey—矩阵中的每一个字节都与该次轮秘钥(roundkey)做xor运算;每个子密钥由密钥生成方案产生。

subbytes—通过非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。

shiftrows—将矩阵中的每个横列进行循环式移位。

mixcolumns—为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。

最后一个加密循环中省略mixcolumns步骤,而以另一个addroundkey取代。

其存在的问题在于传统的逻辑门存在一定位上的扇出,即两个输入,却只有一个输出。这样便有利于边信道攻击中的功耗分析进行破解。

二、可逆逻辑线路

可逆逻辑线路是由一系列可逆逻辑门搭建而成的具有一定函数功能的逻辑电路。它具有如下特点:

(1)输入数等于输出数;

(2)没有扇入与扇出;

(3)没有反馈;

(4)网络分层级联,有时为了保证网络可逆,需要添加一些无用的输出或输入信息位,即垃圾信息位;

(5)n输入、输出向量的可逆网络共有2n!种。

三、pkcs5填充

在aes中,算法处理的数据块大小是16字节。假设输入数据的最后一个数据块少于16字节,便需要填充一些数据补足16字节,并在解密后能正确地分割出原文与填充数据。pkcs5就是为了解决这一类问题而约定的一种通用的填充标准。在该方案中,最后一个数据块使用等于填充字节数量的值(16-最后一个数据块的长度)作为填充值进行填充。如果l是最后一个(不完整的)数据块,那么它将按如下方式进行填充:

l01iflength(l)=15

l0202iflength(l)=14

l0303iflength(l)=13

...

l151515...151515(共计15个15)iflength(l)=1

如果最后一个数据块的长度能够被16整除,那么就填充16个16。

在加密过程中,上述填充内容会附加到数据块后,并进行加密。在解密时,明文的最后一个字节就是要丢弃的填充字符数,根据该字节内容进行丢弃填充部分。

在大数据发展的今天,越来越多的用户已经不仅仅满足于普通文档等小文件的加解密,一些大文件的安全也同样至关重要。为了保证大文件的加密速度,避免大量数据的拥塞和用户的等待,需对现有的加密方式进行改良。



技术实现要素:

本发明的目的是为了克服以上不足,提供一种基于可逆逻辑电路的aes的本地文件加密方法,将可逆逻辑与经典加密算法的结合应用在本地文件加密过程中,既提升了文件加密的速度,同时大大加强了加密算法的抗攻击能力。

本发明的目的通过以下技术方案来实现:一种基于可逆逻辑电路的aes的本地文件加密方法,具体步骤包括:

(100)、加密过程:

(110)、以字节为单位读取需要加密的原文件的总长度,并将该文件是否大于8mb的标记通过文件输出流写在加密文件的前16字节块中;

(120)、将原文件通过文件输入流分组读入,每组最大长度为16字节,若一组数据长度不足16字节,则采用pkcs#5标准填充方法填充至16字节,然后将其存放在字节数组中;

(130)、对字节数组中的数据采用基于可逆逻辑的aes加密算法进行分组加密,得到长度为16字节的密文字节数组;

(140)、将经过加密后的密文字节数组写入到加密文件中,若原文件小于等于8mb,则重复a-c步骤直至文件末尾;若文件大于8mb,则将文件前8mb重复a-c步骤进行加密,将8mb后的数据取aes密钥拓展生成的若干列与之进行异或操作加密。

在本发明一个较佳实施例中,具体步骤还包括:

(200)、解密过程:

(210)、读取加密文件的前16字节块,获取原文件的总长度是否大于8mb的信息,若原文件的总长度小于等于8mb,则;

(220)、将加密文件通过文件输入流分组读入,每组长度为16字节,然后将其存放在字节数组中;

(230)、对字节数组中的数据采用基于可逆逻辑的aes加密算法进行分组解密,读到最后一组字节数组时调用pkcs#5标准填充方法的还原方法进行还原,得到长度为最长为16字节的原文字节数组;

(240)、将经过解密后的原文字节数组写入到加密文件中,若原文件小于等于8mb,则重复e-g步骤直至文件末尾;若文件大于8mb,则将文件前8mb重复e-g步骤进行解密,将8mb后的数据取aes密钥拓展生成的若干列与之进行异或操作解密。

在本发明一个较佳实施例中,所述原文件包括任意格式的纯文本文件、图片或视频。

在本发明一个较佳实施例中,所述可逆逻辑的aes算法,具体为:

a、运用可逆逻辑门的可逆特性,构造相应的可逆逻辑电路来替换、改造传统aes算法中列混合过程的电路构造,达到运用可逆逻辑门来替代传统逻辑门的效果,从而实现aes算法中的加密过程;

b、运用可逆逻辑门的可逆特性,构造相应的可逆逻辑电路来替换、改造传统aes算法中逆列混合过程的电路构造,达到运用可逆逻辑门来替代传统逻辑门的效果,从而实现aes算法中的解密过程。

在本发明一个较佳实施例中,所述步骤a中的所述列混合过程的具体步骤如下:

列混合的操作是通过矩阵相乘来实现的,在算法中,矩阵的乘法和加法都是定义基于z2[x]的不可约多项式m(x)=x8+x4+x3+x+1构造的有限域gf(28)上的运算,所涉及到的加法和乘法运算具体如下:

列混合是针对字、字节和位的操作,到最终列混合是针对位的操作,写成多项式相乘的形式,令其中w(x)是迦罗瓦域上的多项式,记为:

w(x)={03}x3+{01}x2+{01}x+{02}

为了便于计算操作,写成如下的形式:

所以

经过该乘法计算后,每一列中的一个字有下述结果取代:

通过构造可逆逻辑可逆电路来实现;

其中b7b6b5b4b3b2b1b0输入的相应的字节,也即是状态矩阵中每个元素的值,其中b(x)为一个字节;

而一个状态中共含有16个元素,即含有16个字节,每一个字节都需要进行上述的操作,为了简化电路,我们将迦罗瓦域中2·b(x)的运算封装成一个小的可逆逻辑模块电路。

在本发明一个较佳实施例中,所述步骤b中所述逆列混合过程的具体步骤如下:

逆列混合变换是列混合变换的逆变换,逆混合变换是在状态上对每一列进行运算,将每一列看作是4次多项式,将状态的列看作gf(28)上的多项式且被一个固定的多项式w-1(x)模x4+1,其中w-1(x)为:

w-1(x)={03}x3+{01}x2+{01}x+{02}

同样,这里可以写成矩阵乘法,令

经过该乘法计算后,一列中的4个字节将由下述结果取代:

本发明一种基于可逆逻辑电路的aes的本地文件加密方法与现有技术相比具有以下优点:

1、aes算法基于可逆逻辑线路构造:

基于可逆逻辑构造的原理,通过增加可构造密钥的种类提升了加密线路的抗攻击性。在n条线路上的有限域内可以构造的密钥种类多达2n!种,而传统的线路构造方法可以实现的密钥种类仅有2n!种。

2、提升大文件加密速度:

加密文件中包含文件大小标识,对大文件(大于8mb)采用分段加密的方法,前8mb段采用基于可逆逻辑的aes算法进行加密,8mb后的文件段采用异或的方法进行加密,对大文件的加密具有速度优势。

附图说明

图1是本发明基于可逆逻辑电路的aes的本地文件加密方法的软件实例图;

图2是本发明基于可逆逻辑电路的aes的本地文件加密方法的用例图;

图3是本发明基于可逆逻辑电路的aes的本地文件加密方法的流程图;

图4是本发明基于可逆逻辑电路的aes的本地文件加密方法的时序图;

图5是aes算法的加密流程图;

图6是为实现aes算法中的列混合过程而设计的可逆逻辑电路;

图7是可逆逻辑电路数乘2的电路构造;

图8是u器件;

图9是可逆逻辑电路;

图10是逆列混合的电路构造图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。在本发明的一种实施方式中描述的元素和特征可以与一个或更多个其它实施方式中示出的元素和特征相结合。应当注意,为了清楚的目的,说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

在大数据发展的今天,越来越多的用户已经不仅仅满足于普通文档等小文件的加解密,一些大文件的安全也同样至关重要。尽管结合了可逆逻辑电路设计的aes加密算法在加解密的实现效率和安全性上足够可观,但为了保证大文件的加密速度,避免大量数据的拥塞和用户的等待,仍需对现有的加密方式进行改良。

通过对音视频等大文件的编码研究我们发现,这一类文件通常会在文件头设置相应的信息段。信息段的长度小但相关阅读器只有借助这些信息后才能正常读写文件供用户浏览。因此在大型文件的加解密中,信息段的内容显得至关重要。但仅仅对信息段进行加解密任然不能保证安全,剩余部分的大量数据仍需要选择一个科学且高效的方式进行处理,因此我们对于大文件与小文件进行了一个分类,对大文件进行了相应的切割处理。

结合图1-4,本发明公开了一种基于可逆逻辑电路的aes的本地文件加密方法,具体步骤包括:

一、新增信息段

先通过文件输入流中的相应方法获取文件的大小,然后将文件的大小与8mb比较,若文件大小小于8mb,则在加密文件的前16字节块中全部置0;反之,若文件大小大于8mb,则在加密文件的前16字节块中全部置1;

二、加密分类

当文件小于等于8m时,则直接对全文进行基于可逆逻辑线路的aes加密。当文件大小大于8m时,则将原文切分为两个部分,小于等于8m的部分进行基于可逆逻辑线路的aes加密,大于8m的部分取aes密钥拓展生成的第8、12、16、20列数据共16字节与之进行异或操作加密,以此在保证效率的同时也注重了加密的随机性与安全。

具体加密步骤如下:

a、以字节为单位读取需要加密的任意原文件(包括纯文本、图片、视频等)的总长度,并将该文件是否大于8mb的标记通过文件输出流写在加密文件的前16字节块中;

b、将原文件通过文件输入流分组读入,每组最大长度为16字节,若一组数据长度不足16字节,则采用pkcs#5标准填充方法填充至16字节,然后将其存放在字节数组中;

c、对字节数组中的数据采用基于可逆逻辑的aes加密算法进行分组加密,得到长度为16字节的密文字节数组;

d、将经过加密后的密文字节数组写入到加密文件中,若原文件小于等于8mb,则重复a-c步骤直至文件末尾;若文件大于8mb,则将文件前8mb重复a-c步骤进行加密,将8mb后的数据取aes密钥拓展生成的第8、12、16、20列数据共16字节与之进行异或操作加密;

三、解密分类

当文件小于等于8m时,则直接对全文进行基于可逆逻辑线路的aes解密。当文件大小大于8m时,则将原文切分为两个部分,小于等于8m的部分进行基于可逆逻辑线路的aes解密,大于8m的部分取aes密钥拓展生成的第8、12、16、20列数据共16字节与之进行异或操作解密,以此在保证效率的同时也注重了加密的随机性与安全。

具体解密步骤如下:

a、读取加密文件的前16字节块,获取原文件的总长度是否大于8mb的信息,若原文件的总长度小于等于8mb,则;

b、将加密文件通过文件输入流分组读入,每组长度为16字节,然后将其存放在字节数组中;

c、对字节数组中的数据采用基于可逆逻辑的aes加密算法进行分组解密,读到最后一组字节数组时调用pkcs#5标准填充方法的还原方法进行还原,得到长度为最长为16字节的原文字节数组;

d、将经过解密后的原文字节数组写入到加密文件中,若原文件小于等于8mb,则重复a-c步骤直至文件末尾;若文件大于8mb,则将文件前8mb重复a-c步骤进行解密,将8mb后的数据取aes密钥拓展生成的第8、12、16、20列数据共16字节与之进行异或操作解密。

结合图5所示,所述基于可逆逻辑的aes算法具体步骤如下:

(1)、运用可逆逻辑门的可逆特性,构造特殊的可逆逻辑电路来替换、改造传统aes算法中列混合过程的电路构造,达到运用可逆逻辑门来替代传统逻辑门的效果,从而实现aes算法中的加密过程。

(2)、运用可逆逻辑门的可逆特性,构造特殊的可逆逻辑电路来替换、改造传统aes算法中逆列混合过程的电路构造,达到运用可逆逻辑门来替代传统逻辑门的效果,从而实现aes算法中的解密过程。

列混合过程改造:

列混合是整个加密过程中最为重要的一个部分,本质上来讲列混合的操作是通过矩阵相乘来实现的,在算法中,矩阵的乘法和加法都是定义基于z2[x]的不可约多项式m(x)=x8+x4+x3+x+1构造的有限域gf(28)上的运算,所涉及到的加法和乘法运算的详细介绍见下面所述。

列混合是针对字,字节和位的操作,到最终列混合说到底是针对位的操作,之前提到列混合的操作相当于是通过矩阵相乘来实现的,我们可以用来写成多项式相乘的形式,令其中w(x)是迦罗瓦域上的多项式,记为:

w(x)={03}x3+{01}x2+{01}x+{02}

为了便于计算操作,可以写成如下的形式:

所以

经过该乘法计算后,每一列中的一个字有下述结果取代:

这里我们通过构造可逆逻辑可逆电路来实现,见图6。

其中b7b6b5b4b3b2b1b0输入的相应的字节,也即是状态矩阵中每个元素的值,图7就表示迦罗瓦域中2·b(x)的运算,其中b(x)为一个字节。

而一个状态中共含有16个元素,即含有16个字节,每一个字节都需要进行上面的操作,为了简化电路,我们将图7封装成一个小的可逆逻辑模块电路图,见图8所示。

而针对每一列所进行的操作,我们构造如下的可逆逻辑电路图,见图9。

逆列混合过程改造:

逆列混合变换是列混合变换的逆变换。逆混合变换是在状态上对每一列进行运算。将每一列看作是4次多项式。将状态的列看作gf(28)上的多项式且被一个固定的多项式w-1(x)模x4+1,其中w-1(x)为:

w-1(x)={03}x3+{01}x2+{01}x+{02}

同样这里可以写成矩阵乘法。令

经过该乘法计算后,一列中的4个字节将由下述结果取代:

构造的可逆逻辑电路图见图10。

最后应说明的是:虽然以上已经详细说明了本发明及其优点,但是应当理解在不超出由所附的权利要求所限定的本发明的精神和范围的情况下可以进行各种改变、替代和变换。而且,本发明的范围不仅限于说明书所描述的过程、设备、手段、方法和步骤的具体实施例。本领域内的普通技术人员从本发明的公开内容将容易理解,根据本发明可以使用执行与在此所述的相应实施例基本相同的功能或者获得与其基本相同的结果的、现有和将来要被开发的过程、设备、手段、方法或者步骤。因此,所附的权利要求旨在在它们的范围内包括这样的过程、设备、手段、方法或者步骤。

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