安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能介绍
产品简介
下载中心
帮助中心
客户列表
关于安企神

基于一维混沌映射的文件加密算法设计与实现

更新时间:2022-10-28 15:44:25


本文简介:目前,对文件加密主要有身份验证式密码加密和文件内容加密两种方式,前者容易被破解,后者相对比较安全。针对目前的加密方法“防频度统计法”破解能力较弱的特点,基于L0gistic混沌映射,我们提出了密钥以明文的不同而不同的随机生成法和加密算法的随机调用技术,从而提高了文件加密的可靠性。一、数据加密的原理所谓加密就是把有序的可理解的数据变换成无序的不可理解的数据,从而提高其在使用、保存和传送等环节上的安全

基于一维混沌映射的文件加密算法设计与实现

目前,对文件加密主要有身份验证式密码加密和文件内容加密两种方式,前者容易被破解,后者相对比较安全。针对目前的加密方法“防频度统计法”破解能力较弱的特点,基于L0gistic混沌映射,我们提出了密钥以明文的不同而不同的随机生成法和加密算法的随机调用技术,从而提高了文件加密的可靠性。

一、数据加密的原理

所谓加密就是把有序的可理解的数据变换成无序的不可理解的数据,从而提高其在使用、保存和传送等环节上的安全性的过程。保密通信机理如图1所示。

基于一维混沌映射的文件加密算法设计与实现

加密过程可表示为:C= Ek( M);解密过程可表示为:M= Dk(C)。M为明文;K为密钥;C为通过加密后的密文;E,D分别为加密算法和解密算法。

二、文件加密、解密的原理

从本质上来说,计算机中的文件可以看成是从文件头到文件尾的字节的集合.无论是DOS下的文件还是WINDOWS下的文件;无论是有文件头的文件还是没有文件头的;无论是可执行文件还是非可执行文件,都可以只是将它们看成字节流。要对文件加密,使得加密后的文件面目全非,其实就是要将文件的每个字节看成明文,然后用特定的密钥在加密算法的作用下将明文处理成密文。这样被加密后的文件的内容被破坏,不能正常使用,达到了加密的效果。

对文件加密和解密的示意图如图2所示。

基于一维混沌映射的文件加密算法设计与实现

三、混沌映射原理

混沌映射具有很好的性质,即非常相近的初始条件在进行了一定次数的迭代以后会生成两个截然不同的序列;不可由序列的本身预测将产生的下一个数值;而且生成的序列具有白噪声性,即等概率地分布在值域上。由于这些良好的性质,它非常适合于文件加密。

L0gistic迭代公式如下:

基于一维混沌映射的文件加密算法设计与实现

其中,参数a∈(0,4);X(n)∈(O,1),n=0,1,2,…。

由该映射产生的序列将呈现出混沌态。由于要将构成文件的一个一个字节加密,所以对生成的实数的集合{X(n)}还要处理成由整数构成的伪随机序列,从而用这些数做加密密钥或者加密算法的随机选择数。

四、基于混沌映射的多随机性文件加密算法

1、文件加密的要求

1)能对基于DOS和WINDOWS的文件加密。

2)对同一个文件,每次加密时,输入的密码不同,则采用不同的加密算法来加密。

3)对构成文件的一个一个字节加密时,要求密钥不同,从而避免被“频度统计法”解密。

4)要区分加密,对有文件头的,只加密前100个字节;对没有文件头的数据文件,全文加密。

2、常用加密算法

对字节流的加密和解密其实就是有规律地破坏和恢复数据,为了实现多种加密方法的随机调用,特设计如下几种加密方法。

1)加减法

将每个字节看成(0~255)之间的一个数,加密时将每个字节加M,解密时将每个字节减M,当然要考虑不能溢出。

2)求反法

将每个字节求反。变成其反码。

3)移位法

将每个字节循环左移M位。

4)替代法

将(0~255)这256个数构造一个换码表,形成一一对应的关系,加密时换码,解密时反换码。

5)异或法

将每个字节跟一个特定的字节M异或,解密时,再跟M异或就还原了。

6)错序文件头法

对于只加密文件头的情况,只要破坏了文件头中各字节的排列顺序,其结构就被破坏,从而达到加密的目的。如将奇偶字节交换位置。

3、加密方法的随机性实现

为了防止别人用“频度统计”的方法解密被加密的文件,对文件加密时,加密算法要随机调用。

本文基于L0gistic迭代公式混沌映射机制,加密算法的随机调用的思想为:

1)由用户输入的密码生成实数a和X(0);

2)利用公式迭代1 00次,求得X (IOO);

3)求得X (IOO)的小数点后的4,5,6位组成的整数Y;

4) Z=Y mc)cl 6,即将Y对6取余数,得到小于6的整数Z;

5)Z就是所求得的用以选择加密算法的伪随机数,0对应算法1;1对应算法2;依次类推。

4、密钥的随机性实现

密码和密钥是不同的,密码是用户对文件加密和解密的一个保密的字符串;密钥是由密码生成的一个在对明文加密过程中起作用的字符串。

假设对一个含文件头的文件加密,只加密前100个字节,要采用异或的方法加密。

为了防止有人对加密后的文件内容按照“频度统计法”解密,对每个字节加密的密钥字符应该不同,为此采用了基于L0gistic混沌影射的密钥生成方法:

1)由用户输入的密码生成实数a和X(0);

2)利用公式迭代2000次求得X (2000);

3)求得X( 2000)的小数点后的4,5,6位组成的整数Y;

4) Z=Y mc)cl 256,即将Y对256取余数,得到小于255的整数Z;

5)Z就是所求得的对第一个字节进行异或加密的密钥;

6)对X( 2000)再迭代5次,继续3,4步求得的Z就是对第二个字节进行异或的密钥;

7)对X( 2005)再迭代5次,继续3,4步求得的Z就是对第三个字节进行异或的密钥;

8)依次类推。

这样对100个字节虽然都是采用异或的方法加密,但是因为每个字节的密钥是各不相同的,所以加密后的密文没有规律可言,基本上不可能被解密。

5、密钥的传递

由于采用了对称加密机制,即加密和解密的密码是相同的,那么解密的时候必须知道加密时候的密码,只有密码正确才能解密。为此必须将加密时的密码(当然要做简单加密,防止别人用16进制工具查看文件中的字符串)保存在某个地方,以便解密时,将输入的解密密码和加密密码对比。

本文将处理过的密码加到被加密文件的尾部,又因为不能将未加密的文件错误解密,所以在被加密文件的尾部还增加了加密标志“#JIAMI#’’,形成了被加密文件的特定文件尾结构,如图3所示。

基于一维混沌映射的文件加密算法设计与实现

这样,每个被加密的文件处理后的密码和加密标志都追加到了尾部,解密时,只有判断出是被加密的文件并且用户输入的密码正确才解密,从而保证了解密程序不会因误操作而破坏那些没有加密的文件。

6、具体实现

本文件加密解密软件采用了VB编制,界面简洁友好,能实现各种文件的加密和解密,并且加密和解密的速度适中,能满足用户要求。加密后的文件,有文件头的不能再被相应的应用程序打开;没有文件头的纯数据文件被打开后都是乱码。达到了加密的目的。

小知识之字节流字节流(byte stream)是一种比特流,不过里面的比特被打包成一个个我们叫做字节(Bytes)的单位。

立即下载试用

基于3DES加密算法的研究

关于加密方法,我们之前有介绍过很多,最近大出风头的秀尔算法和DES、MD5等等一直占据鳌头,今天我们来介绍一个小众的加密算法——就是3DES。

加密算法主要通过软件和硬件两种方式来实现,软件的实现方式具有灵活方便的优点,同时也具有加密速度受限制的缺点。采用硬件实现加密算法是实际应用中必须要考虑到的问题。目前经常采用硬件FPGA等来实现,该种实验方式具有处理速度快的特点,但是对系统的复杂度要求较高。

嵌入式微处理器具有实现简单,系统集成度高,体积小,易于移植等众多优点,因此有必要研发基于嵌入式微处理器的加密算法硬件设备,在此提出一种基于ARM处理器的3DES的硬件实现方法。

3DES算法原理

DES是美国国家标准局颁布的数据加密算法,作为世界范围内的公开加密标准已经使用了20多年。随着计算机处理速度的提高,DES算法面临着一些安全威胁,DES采用56位密钥,曾经有人用穷举搜索法对DES进行过密钥搜索攻击。

近年来也有人提出了差分和线性攻击方案,该方案的实施必须有超高速计算机的支持。为了增强DES算法应对差分或线性攻击的可能性,人们提出了一系列改进方案,采用增加密钥长度是一种可行的途径。

为了增加密钥的长度,可将分组密码进行级联,在不同的密钥作用下,连续多次对一组明文进行加密。其中,最有效的方法是使用三重DES加密,它可使加密密钥长度扩展到128位,在提高加密强度的同时,足以应付目前的各种攻击。

DES是一个分组加密算法,它以64位为分组对数据加密。64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。加密的密钥为64位,实际长度为56位,DES算法的保密性取决于密钥。DES对64位的明文分组进行操作。

首先通过一个初始置换IP,将64位的明文分成各32位长的左半部分和右半部分,该初始置换只在16轮加密过程进行之前进行一次。在经过初始置换操作后,对得到的64位序列进行16轮加密运算,这些运算被称为函数f,在运算过程中,输入数据与密钥结合。经过16轮运算后,左、右两部分合在一起得到一个64位的输出序列,该序列再经过一个末尾置换IP-1,获得最终的加密结果。过程如图1所示。

在每一轮加密过程中,函数厂的运算包括以下四个部分:

首先进行密钥序列移位,从移位后的56位密钥序列中选出48位;

然后通过一个扩展置换将输入序列32位的右半部分扩展成48位,再与48位的轮密钥进行异或运算;

再者通过8个s盒将异或运算后获得的48位序列替代成一个32位序列;

最后对32位序列应用置换P进行置换变换,得到-厂的32位输出序列。将函数厂的输出与输入序列的左半部分进行异或运算后的结果作为新一轮加密过程输入序列的右半部分,当前输入序列的右半部分作为新一轮加密过程输入序列的左半部分。

上述过程重复操作16次,便实现了DES的16轮加密运算。

假设Bi是第i轮计算的结果,则Bi为一个64位的序列,Li和Ri分别是Bi的左半部分和右半部分,Ki是第i轮的48位密钥,且f是实现代换、置换及密钥异或等运算的函数,那么每一轮加密的具体过程为:

以上操作的详细过程如图2所示。

在3DES加密算法中,加密过程用两个不同的密钥K1和K2对一个分组消息进行三次DES加密。首先使用第一个密钥进行DES加密,然后使用第二个密钥对第一次的结果进行DES解密,最后使用第一个密钥对第二次的结果进行DES加密。

解密过程首先使用第一个密钥进行DES解密,然后使用第二个密钥对第一次的结果进行DES加密,最后再使用第一个密钥对第二次的结果进行DES解密。

DES算法的密钥长度是56位,三重DES算法的密钥长度是112位,加密强度显著增强,可以很好地应付各种攻击,目前尚没有可行的攻击方法,应用3DES的加密系统具有很大的实用价值。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16336.html