CN103595523A - 基于混沌变换的文件加解密方法及其系统 - Google Patents
基于混沌变换的文件加解密方法及其系统 Download PDFInfo
- Publication number
- CN103595523A CN103595523A CN201210289454.6A CN201210289454A CN103595523A CN 103595523 A CN103595523 A CN 103595523A CN 201210289454 A CN201210289454 A CN 201210289454A CN 103595523 A CN103595523 A CN 103595523A
- Authority
- CN
- China
- Prior art keywords
- iteration
- module
- identifying code
- key
- coefficient
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
一种基于混沌变换的文件加密方法,包括:(a1)对用于加密内容的密码进行预处理;(a2)提取一组明文数据,生成一组验证码的初始值;(a3)获取第二迭代系数和第二迭代次数;(a4)根据所述第二迭代系数和所述第二迭代次数以执行密钥迭代,生成迭代结果;(a5)对迭代结果和明文数据进行异或操作;(a6)根据明文数据生成验证码;(a7)将异或操作的结果写入文件中,并生成密文;(a8)判断密钥迭代是否执行至所述加密内容的尾部,若是,则执行步骤(a9);否则,继续执行步骤(a4);(a9)将明文数据依次迭代的迭代结果和所有所述迭代结果转换成的整数,以及最后一组下一次迭代生成的加密密钥保存至加密内容的末尾。
Description
技术领域
本发明涉及信息安全技术领域,尤其涉及一种可快速地对文件进行加解密方法及其系统,适用于手机、笔记本、平板电脑等需要对隐私文件进行保密的领域。
背景技术
在计算机中,文件是数据的一种组织形式,为了保证文件在存储、传输和使用过程中的安全,必须对它进行加密处理。一般是通过密码系统以实现加密处理。而密码系统是基于数学原理对原始信息加密和对加密的信息进行解密。目前,对文件的加密主要有身份验证式密码加密和文件内容加密两种方式。所述身份验证式密码加密是指根据用户所知道的密码信息来证明用户的身份,例如,静态密码,短信密码或数字签名。而所述文件内容加密主要通过以下密码技术对文件内容进行加密,包括对称密码和非对称密码,其中对称密码可能是分组密码,也可能采用流密码。所述身份式密码加密相对容易被破解,文件内容加密存在着加密解密速度慢和加密强度不够等问题。
发明内容
本发明的目的在于解决上述问题,提供一种基于混沌变换的文件加解密方法。所述方法利用混沌变换的方法,实现了多随机性的文件加密算法。本发明通过混沌特性和多随机特性,增加了对文件解密的难度,提高了加密数据的安全性,实现了密钥的随机生成和加密算法的随机调用,使得加密后的文件更加安全,而运算相对比较简单,尤其适用于手机、电脑等系统的文件保密。
为实现上述的目的,本发明采用下述技术方案。
一种基于混沌变换的文件加密方法,包括以下步骤:
(a1)对用于加密内容的密码进行预处理;
(a2)提取一组明文数据,生成一组验证码的初始值;
(a3)获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;
(a4)根据所述第二迭代系数和所述第二迭代次数以执行密钥迭代,生成迭代结果;
(a5)对所述迭代结果和明文数据进行异或操作;
(a6)根据明文数据生成验证码;
(a7)将异或操作的结果写入文件中,并生成密文;
(a8)判断密钥迭代是否执行至所述加密内容的尾部,若是,则执行步骤(a9);否则,继续执行步骤(a4);
(a9)将明文数据依次Logistic迭代的迭代结果和所有所述迭代结果转换成的整数,以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
进一步,在步骤(a1)中,进一步包括以下子步骤:
(a11)判断加密内容是否为文件,若是,则对加密内容加上字符“F”;否则,则对加密内容加上字符“W”;
(a12)获取所述加密内容的信息指纹;
(a13)判断密钥的长度是否大于所述加密内容的长度,若是,则执行步骤(a14);否则,执行步骤(a15);
(a14)减少密钥长度变换;
(a15)获取第一迭代系数和第一迭代次数;
(a16)根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统快速进入混沌状态。
进一步,在步骤(a3)中,进一步包括以下子步骤:
(a31)获取多个密钥数的平均数;
(a32)提取所述平均数的小数部分;
(a33)执行规则计算,以保证所述第二迭代系数满足混沌变换的条件;
(a34)获取所有密钥整数的平均数;
(a35)提取所述平均数的小数部分;
(a36)根据所述小数部分和预设定的迭代次数进行Logistic迭代;
(a37)将迭代结果换算成整数。
进一步,在步骤(a6)中,进一步包括以下子步骤:
(a61)提取一组明文数据;
(a62)提取明文数据变换成的小数部分,并生成第三迭代系数;
(a63)获取第三迭代次数;
(a64)根据所述第三迭代次数和所述第三迭代系数,执行Logistic迭代;
(a65)将迭代结果换算成整数。
一种基于混沌变换的文件解密方法,包括以下步骤:
(b1)对解密密钥和密文进行预处理;
(b2)提取一组明文数据,生成一组验证码的初始值;
(b3)获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;
(b4)根据所述第二迭代系数和所述第二迭代次数以执行Logistic迭代,生成迭代结果;
(b5)对所述迭代结果和密文进行异或操作;
(b6)将异或操作的结果写入文件中,并生成明文;
(b7)根据异或操作的结果生成验证码;
(b8)判断Logistic迭代是否执行至所述解密内容的尾部,若是,则执行步骤(b9);否则,继续执行步骤(b4);
(b9)判断解密迭代的迭代结果取整和最后一组下一次Logistic迭代的解密密钥,是否与保存的验证码一致,若一致,则解密成功;否则,则解密失败。
进一步,在步骤(b1)中,进一步包括以下子步骤:
(b11)判断解密内容是否为文件,若是,则对解密内容加上字符“F”;否则,则对解密内容加上字符“W”;
(b12)获取所述解密内容的信息指纹;
(b13)判断解密内容的长度是否小于所述密钥的长度的2倍;若是,则执行步骤(b14);否则,执行步骤(b17);
(b14)减少密钥长度变换;
(b15)提取解密数据,生成解密密文和验证码;
(b16)提取部分的解密数据作为验证码,设置另一部分的解密数据作为解密密文;
(b17)获取第一迭代系数和第一迭代次数;
(b18)根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统进入混沌状态。
本发明的另一个目的是提供一种基于混沌变换的文件加密系统以及解密系统。
为实现上述的目的,本发明采用下述技术方案。
一种基于混沌变换的文件加密系统,包括以下模块:预处理加密模块、验证码初始值加密模块、第二迭代系数加密模块、第二迭代次数加密模块、迭代加密模块、异或加密模块、验证码加密模块、密文加密模块、第一判断加密模块和保存加密模块;
所述预处理加密模块用于预处理用于加密内容的密码;
所述验证码初始值加密模块与所述的预处理加密模块连接,用于生成验证码初始值;
所述第二迭代系数加密模块与所述的验证码初始值加密模块连接,用于获取第二迭代系数;
所述第二迭代次数加密模块与所述的第二迭代系数加密模块连接,用于获取第二迭代次数;
所述迭代加密模块与所述第二迭代次数加密模块连接,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果;
所述异或加密模块与所述迭代加密模块连接,用于对所述迭代结果和明文数据进行异或操作;
所述验证码加密模块与所述异或加密模块连接,用于根据明文数据生成验证码;
所述密文加密模块与所述验证码加密模块连接,用于将异或操作的结果写入文件,并生成密文;
所述第一判断加密模块与所述密文加密模块连接,用于判断密钥迭代是否执行至所述加密内容的尾部;
所述保存加密模块与所述第一判断加密模块连接,用于将明文数据依次Logistic迭代的结果和所有所述迭代结果转换成的整数,以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
一种基于混沌变换的文件解密系统,包括以下模块:预处理解密模块、验证码初始值解密模块、第二迭代系数解密模块、第二迭代次数解密模块、迭代解密模块、异或解密模块、明文解密模块、验证码解密模块、第一判断解密模块和第二判断解密模块;
所述预处理解密模块用于预处理解密密钥和密文;
所述验证码初始值解密模块与所述的预处理解密模块连接,用于生成验证码初始值;
所述第二迭代系数解密模块与所述的验证码初始值解密模块连接,用于获取第二迭代系数;
所述第二迭代次数解密模块与所述的第二迭代系数解密模块连接,用于获取第二迭代次数;
所述迭代解密模块与所述第二迭代次数解密模块连接,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果;
所述异或解密模块与所述迭代解密模块连接,用于对所述迭代结果和密文进行异或操作;
所述明文解密模块与所述异或解密模块连接,用于将根据所述异或操作的结果写入文件中,并生成明文;
所述验证码解密模块与所述明文解密模块连接,用于根据异或操作的结果生成验证码;
所述第一判断解密模块与所述验证码解密模块连接,用于判断Logistic迭代是否执行至所述解密内容的尾部;
所述第二判断解密模块与所述第一判断解密模块连接,用于判断解密迭代的结果取整和最后一组下一次Logistic迭代的解密密钥,是否与保存的验证码一致。
本发明的优点在于:
(1) 利用混沌特性和多随机特性,增加了对文件解密的难度,使加密的信息具有很高的保密度。
(2) 利用混沌加密的特性(其处理速度和密钥长度无关),可以快速对文件内容进行加密,使得本发明适用于实时信号处理和静态加密场合。
(3) 当加密后的文件内容中有几个字节存在错误,但是通过本发明所采用的算法,还是可以成功解密出其他的内容。
(4) 本发明输入的密码字符可以是任意的,长度也是任意的,也可以是文件,可以实现用文件来加密文件。
附图说明
图1是本发明所述一种基于混沌变换的文件加密方法的具体实施步骤的流程示意图。
图2是本发明对用于加密内容的密码进行预处理的流程示意图。
图3是本发明所述迭代系数生成流程示意图。
图4是本发明所述迭代次数生成流程示意图。
图5是本发明密钥混沌变换流程示意图。
图6是本发明验证码生成流程示意图。
图7是本发明所述一种基于混沌变换的文件解密方法的具体实施步骤的流程示意图。
图8是本发明对解密密钥和密文预处理的流程示意图。
图9是本发明所述基于混沌变换的文件加密系统的示意图。
图10是本发明所述基于混沌变换的文件解密系统的示意图。
具体实施方式
下面结合附图对本发明基于混沌变换的文件加解密方法及其系统的具体实施方式做详细说明。
参见图1,一种基于混沌变换的文件加密方法,包括以下步骤:S101、对用于加密内容的密码进行预处理;S102、提取一组明文数据,生成一组验证码的初始值;S103、获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;S104、根据所述第二迭代系数和所述第二迭代次数以执行密钥迭代,生成迭代结果;S105、对所述迭代结果和明文数据进行异或操作;S106、根据明文数据生成验证码;S107将异或操作的结果写入文件中,并生成密文;S108、判断密钥迭代是否执行至所述加密内容的尾部,若是,则执行步骤S109;否则,继续执行步骤S104;S109、将明文数据依次Logistic迭代的迭代结果和所有所述迭代结果转换成的整数,以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
其中,步骤S101包括以下子步骤,参见图2所示,具体包括:S201、判断加密内容是否为文件,若是,则对加密内容加上字符“F”;否则,则对加密内容加上字符“W”;S202、获取所述加密内容的信息指纹;S203、判断密钥的长度是否大于所述加密内容的长度,若是,则执行步骤S204;否则,执行步骤S205;S204、减少密钥长度变换;S205、获取第一迭代系数和第一迭代次数;S206、根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统快速进入混沌状态。
其中,所述步骤S103包括以下子步骤,参见图3和图4所示,具体包括:S301获取多个密钥数的平均数;S302、提取所述平均数的小数部分;S303、执行Logistic迭代式规则计算,以保证所述第二迭代系数满足混沌变换的条件;S401、获取所有密钥整数的平均数;S402、提取所述平均数的小数部分;S403、根据所述小数部分和预设定的迭代次数进行Logistic迭代;S404、将迭代结果换算成整数。
所述步骤S104包括以下子步骤,参见图5所示,具体包括:S501、获取每一个密钥的字节,并转换为整数。S502、换算成0~1的小数(X0)。S503、根据生成的第二迭代系数和第二迭代次数,进行密钥迭代。S504、将生成的迭代结果换算成整数。
所述步骤S106包括以下子步骤,参见图6所示,具体包括:S601、提取一组明文数据;S602、提取明文数据变换成的小数部分,并生成第三迭代系数;S603、获取第三迭代次数;S604、根据所述第三迭代次数和所述第三迭代系数,执行Logistic迭代;S605、将迭代结果换算成整数。
参见图7,一种基于混沌变换的文件解密方法的具体实施步骤的流程示意图,包括以下步骤:S701、对解密密钥和密文进行预处理。S702、提取一组明文数据,生成一组验证码的初始值。S703、获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数。S704、根据所述第二迭代系数和所述第二迭代次数以执行Logistic迭代,生成迭代结果。S705、对所述迭代结果和密文进行异或操作。S706、将异或操作的结果写入文件中,并生成明文。S707、根据异或操作的结果生成验证码。S708、判断Logistic迭代是否执行至所述解密内容的尾部,若是,则执行步骤S709;否则,继续执行步骤S704。S709、判断解密迭代的迭代结果取整和下一次变换的解密密钥,是否与保存的验证码一致,若一致,则解密成功;否则,则解密失败。
其中,步骤701包括以下子步骤,参见图8所示。具体包括:S801、判断解密内容是否为文件,若是,则对解密内容加上字符“F”;否则,则对解密内容加上字符“W”;S802、获取所述解密内容的信息指纹;S803、判断解密内容的长度是否小于所述密钥的长度的2倍;若是,则执行步骤S804;否则,执行步骤S806;S804、减少密钥长度变换,变换到解密内容长度的2分之一;S805、提取解密数据,生成解密密文和验证码;S806、提取部分的解密数据作为验证码,设置另一部分的解密数据作为解密密文;S807、获取第一迭代系数和第一迭代次数;S808、根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统进入混沌状态。
本发明所述基于混沌变换的文件加密方法及其解密方法,是利用混沌变换的方法而设计了一种多随机性的文件内容加密算法。由于近来混沌理论日趋成熟,为混沌变换在通信等领域的应用提供了理论基础。混沌信号的非周期性连续宽带频谱,类似噪声的特性。另外,混沌信号对初始条件的高度敏感,即使两个完全相同的混沌系统从近乎相同的初始条件开始演化,其轨道将很快变得互不相关,这使得混沌信号具有长期不可预测性和抗截获能力及复杂的运动轨迹,这使得混沌信号具有较高的复杂度。同时混沌系统本身具有确定性,由非线性系统的方程、参数和初始条件所决定,因此,混沌信号易于产生复制。混沌信号的隐蔽性、不可预测性、高复杂度和易于实现等特性都适合于保密通信。与其他加密方法不同的是,混沌加密是一种动态加密方法,由于其处理速度和密钥长度无关,因此这种方法的计算效率高、可用于实时信号处理和静态加密场合。而且用此方法加密的信息很难破译,具有很高的保密度。本发明的加解密方法正是利用混沌特性和多随机特性,增加了解密的难度,提高了加密数据的安全性,实现了密钥的随机生成和加密算法的随机调用,使得加密后的文件更加安全,而运算相对比较简单,基本上都是加减乘除,是一种适用于手机等系统的文件保密方法。本发明基于混沌变换的文件加密方法及其解密方法,在加解密过程中,利用Logistic模型:X_n+1=u*Xn(1-Xn),其中u为参数,3.5699456<u<=4,0<Xi<1,此时该Logistic迭代式呈混沌特性。参数u(或称为迭代系数)也是由所输入的密码字符通过类似的混沌变换所得。加密时,先把输入的密码字符通过取信息指纹的方法转换成一串散列字符密钥,如果这个散列字符密钥比要加密的数据长度大,则把这个散列密钥重新变换,使其长度等于加密的文件数据长度。加密时以把加密密钥转化为一个字节(一个字节可以表示0-255的数据)的整数数组,对所述整数数组的每一个数转化为Logistic迭代式中的Xi参数,再用另一个Logistic迭代式产生的数作为该次变换的迭代次数,即获取Logistic迭代式的参数:迭代系数和迭代次数,并根据输入的密钥的平均数获得X0,然后根据Logistic迭代式,进行依次迭代。
Xi每次迭代的结果生成一个密钥数据,用其与明文数据做异或操作,生成密文整数,并将所述密文整数作为最后的加密结果予以保存。按着加密密钥数组的长度依次循环,直至明文的每一个数据都被加密。解密时根据输入的密码用同样的方法生成Logistic迭代后的密钥数据,所述密钥数据与要解密的数据做异或操作,即可获得解密数据。
为了判断解密后的文件内容是否完全解密成功,可以在加密的过程中每次读取一组明文数据时,把明文数据转换成迭代次数、迭代系数,初始值取第一次获得的明文数据,转换的方法与密钥的处理流程一样,循环迭代,最后把该组迭代数据保存在其他地方(验证码)。解密时,提取密钥数据,并与要解密的数据进行异或操作,生成该组数据。同时,按照相同的方法转换获得验证码,判断其与保存数据是否一致,即可判断是否解密成功。
接下来将给出一个具体实施例,并结合上述的本发明所述基于混沌变换的文件加密方法,对本发明作出进一步详细的描述。
假如要加密的文件内容为:HelloWorld,加密的密码是一个字符串:1234。(本发明输入的密码字符可以是任意的,长度也是任意的,也可以是文件,可以实现用文件来加密文件)。其中,HelloWorld对应的计算机编码为:48 65 6C 6C 6F 57 6F 72 6C 64,这是16进制的,换算成10进制为72 101 108 108 111 87 111 114 108 100。根据图2所示,(参见步骤S201)此处应加上字符“W”为:W1234,取MD5和CRC32信息指纹分别为A1A013C329E63ACE7AB85AFD17319350、F6B6DB79,混和在一起为A1A013C329E63ACE7AB85AFD17319350 F6B6DB79,这些数都是16进制的。(参见步骤S202)获取所述加密内容的信息指纹。除了上述的MD5和CRC32之外,还可以获取SHAR1、SHAR2或MD4等。于是,进行如下16进制转10进制的转换:A1转换成十进制数即为161,A0即为160…以此类推,于是A1A013C329E63ACE7AB85AFD17319350F6B6DB79则可写成 161 160 19 195 41 230 58 208 122 184 90 253 23 49 147 80 246 182 219 121。从上述信息中可以得知,要加密的内容(明文)有10个数字(长度为10),而变换后的密钥为20个数字(长度为20)。(根据前文步骤S203所述)需要进行密钥长度减小变换。在本发明具体实施例中,可以取第一个数字和第十一个数字相加并对255(代表一个字节)取余:(161+90)%255=251,第二个和第十二个数字相加:(160+253)%255 = 158……以此类推,依次可以取得:251 158 42 244 187 55 49 135 86 50。(参见步骤S205)生成密钥加密的迭代系数:取前5个数的平均数(251+158+ 42 +244 +187)/5=176.4(参见步骤S301),取小数部分0.4×0.4+3.6=3.76(参见步骤S302),3.76即为密钥加密的第一迭代系数(参见图3所示)。根据Logistic迭代式混沌成的条件是系数取值范围3.5699456<u<=4,在本发明具体实施例中,取值a*0.4+3.6(a是平均数的小数部分,即0<=a<1),刚好处于大于等于3.6,小于4的范围,这个范围能较大程度的利用3.5699456<u<=4.0这个范围,且a*0.4+3.6的值与a的取值是线性相关的,能够随a的取值改变而改变,且改变程度做到最大相关性(对于每一个a的改变,这个式子的值能相对改变的最多),其次就是a*0.4+3.6最容易计算。除了本发明具体实施例中取值a*0.4+3.6之外,还可以取其他值,只要能使Logistic迭代式混沌成的条件得到满足即可。接着,将密钥中各个数字转化成小数:如第一个数字(251/255)×0.8+0.1=0.887451,第二个数字(158/255)×0.8+0.1=0.5956863…以此类推。其中,所述密钥中各个数字b的取值范围为:0<=b<=255,那么应该是(b/255)*0.8+0.1,可以得到0.1<= (b/255)*0.8+0.1 <=0.9,如此设置可以较大程度地利用Logistic迭代式的混沌变换成立条件,初始值的成立条件0<X0<1,做到最大程度的线性改变相关性,以及最容易计算。再将这些小数代入Logistic迭代式X_n+1=3.76*Xn(1-Xn)中。设置迭代次数为20次(预设定的迭代次数,或称第一迭代次数),是因为20次迭代之后,可以保证快速进入混沌状态,同时又能兼顾效率,不至于花费太多时间。根据Logistic迭代式,密钥长度减少生成的第一个数字251迭代20次为0.822016,密钥中其余9个数也以此完成上述的迭代后(参见图2所示),这时进入加密流程。
参见图1、图3和图4所示, 提取251 158 42 244 187 55 49 135 86 50这样一组密钥整数的平均数,(251+158+42+244+187+55+49+135+86+50)/10=125.7(参见步骤S401),提取所述平均数的小数(参见步骤S402),取小数部分生成X0=0.7。迭代系数取后五个数的平均数(55+49+135+86+ 50)/5=75.0,提取小数部分Y0=0。第一次是取前10个数的平均数,第二次是取后5个数的平均数,如此获取平均数,具有以下好处:1).随机性较好,其他人很难从这些平均数的小数部分推算出密钥的数学特征,故保密性较好。2).计算简单快捷。
若取后5个数以生成迭代系数,根据a*0.4+3.6可以得到0×0.4+3.6=3.6,3.6即为加密Logistic迭代式的迭代系数(或称第二迭代系数)。再按迭代式X_n+1=3.6*Xn(1-Xn)迭代20次后生成的小数为0.433631,换算成整数,直接取小数后的第一位即可即为4,4即为加解密时的迭代次数(或称第二迭代次数),参见图5每次加解密迭代次数都是不一样的。第一个密钥251迭代20次后的小数0.822016,再通过X_n+1=3.76*Xn(1-Xn)迭代4次,变为0.691593,取整为(0.691593×1000取整)%255=181,第2个密钥158经过上述迭代后为161,…以此类推,依次把每个数字做同样的变换得到如下迭代结果181 161 38 59 172 60 224 229 214 9,然后将所述迭代结果与明文72 101 108 108 111 87 111 114 108 100进行异或操作。
在本发明具体实施例中采用异或操作,是由于异或操作在计算机上是一种比较快捷的可逆的操作,例如:如果a^b = c(a、b都是整数,a为密钥数字,b为明文数字,^表示异或操作),那么一定有a^c = b。除了本发明具体实施例中采用所述异或操作之外,也可以采用其他操作,只要能在解密时变换回原来的明文数字即可,例如,(a+b)%255 = d(a、b都是整数,a为密钥数字,b为明文数字,%表示取余操作),(d-a+255)%255 = b,但是如此计算相对麻烦,特别是进行大数据量运算时,效率也不高,所以较佳的实施方式还是采用异或操作。如取各组第一个数181与72,异或操作得到253,253即为加密的数据,第二个数161和101异或操作得到196,…以此类推,这样生成的一组加密数据为:253 196 74 87 195 107 143 151 186 109。
生成验证码的过程如下:(72/255)×0.4+3.6=3.7129412为第三迭代系数,初始值为(72/255)×0.8+0.1=0.325882353,验证码的迭代次数和密钥的迭代次数是一样的,迭代次数也为4,代入Logistic迭代式后,3.7129412* Xn(1-Xn)迭代四次得到0.2868083…以此类推,依次按照相同的方法对后面的数进行处理,得到这样的一组小数,这组小数作为下一次的迭代初始值,下一次迭代重新按照相同规则由明文数据生成迭代系数,如图6。最后再进行这样操作如(0.2868083×1000取整)%255=286%255=31,最后生成31 126 13 13 59 65 59 96 13 103这样一组数据。
下一次加解密密钥:根据图4所示,生成下一次的迭代次数。已知X0=0.7,迭代系数为3.6,与设定迭代次数为21次,则当X_n+1=3.6*Xn(1-Xn)迭代21次(即首次迭代20次后进入混沌状态,再循环迭代1次,共计21次)后生成的小数为0.884143,(0.884143×10)取整即为8。根据Logistic迭代式X_n+1=3.76*Xn(1-Xn),再次迭代8次(第三迭代次数)如第一个密钥251转化成小数后,经过迭代20+4+8=32次后,结果为0.2361862,(0.2361862*1000取整)%255=236,加上明文迭代的结果:(236+31)%255=267%255=12…以此类推,依次变换即可得到:12 160 1 249 92 44 25 241 120 81。最终的加密数据为253 196 74 87 195 107 143 151 186 109 12 160 1 249 92 44 25 241 120 81。
解密是加密的逆过程,由上面的变换得知,输入密码并提取信息指纹后的密钥长度为20,而密文也为20(含验证码),密文的长度小于取信息指纹后的密钥长度的2倍(20<20*2),所以,可以判定密文的前一半为加密的数据,后一半为验证码。然后做同样的Logistic迭代式的变换,如果输入密码正确,则可由同样的变换得到最后的密钥181 161 38 59 172 60 224 229 214 9(不依赖于要加解密的数据,只与加解密的数据长度和输入的密码有关)。与密文253 196 74 87 195 107 143 151 186 109依次异或,得到明文数据。如181与253异或操作,得到72,正是明文的数据。解密内容正确,就能按照同样的规则再一次正确生成验证码,最后与加密时保存的验证码比较,从而可以确定是否最终解密成功。如果输入的密码不正确,则会通过混沌迭代依次把这种差异放大,当然也就不能正确的解密内容,如图8。
本发明所述方法中采用验证码是为了验证解密是否成功。验证码是在加密或解密完全完成后才最终生成的,如果解密者想要通过穷举攻击(一个一个密码的尝试)来破解,那就只能等到把整个密文都解密完全才能知道解密是否成功,整个解密过程是不会报错的,这与常见的例如RAR解密不同,RAR解密时如果密码不正确,那么立即知道解密是否成功。所以,通过采用验证码,可以有效防止穷举攻击。此外,本发明具有一定的容错性,与RAR压缩加密不同(如果加密后RAR文件错误,则整个文件都不能解密)。本发明所采用的算法,当加密后的文件内容中有几个字节为错误,还可以成功解密出其他的内容。
为了解决上述问题,本发明还提供了一种本发明所述基于混沌变换的文件加密系统和解密系统,分别参见图9和图10所示。
一种基于混沌变换的文件加密系统,包括以下模块:预处理加密模块M901、验证码初始值加密模块M902、第二迭代系数加密模块M903、第二迭代次数加密模块M904、迭代加密模块M905、异或加密模块M906、验证码加密模块M907、密文加密模块M908、第一判断加密模块M909和保存加密模块M910;所述预处理加密模块M901用于预处理用于加密内容的密码;所述验证码初始值加密模块M902与所述的预处理加密模块M901连接,用于生成验证码初始值;所述第二迭代系数加密模块M903与所述的验证码初始值加密模块M902连接,用于获取第二迭代系数;所述第二迭代次数加密模块M904与所述的第二迭代系数加密模块M903连接,用于获取第二迭代次数;所述迭代加密模块M905与所述第二迭代次数加密模块M904连接,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果;所述异或加密模块M906与所述迭代加密模块M905连接,用于对所述迭代结果和明文数据进行异或操作;所述验证码加密模块M907与所述异或加密模块M906连接,用于根据明文数据生成验证码;所述密文加密模块M908与所述验证码加密模块M907连接,用于将异或操作的结果写入文件,并生成密文;所述第一判断加密模块M909与所述密文加密模块M908连接,用于判断密钥迭代是否执行至所述加密内容的尾部;所述保存加密模块M910与所述第一判断加密模块M909连接,用于将明文数据依次Logistic迭代的结果和所有所述迭代结果转换成的整数,以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
其中,预处理加密模块M901用于预处理用于加密内容的密码。在所述预处理加密模块M901内部,首先判断加密内容是否为文件;然后获取所述加密内容的信息指纹;再获取第一迭代系数和第一迭代次数,并通过Logistic迭代式使得系统进入混沌状态。
第二迭代系数加密模块M903用于获取第二迭代系数。在所述第二迭代系数加密模块M903内部,首先获取多个密钥数的平均数;然后提取所述平均数的小数部分;接着执行Logistic迭代式规则计算。
第二迭代次数加密模块M904用于获取第二迭代次数。在所述第二迭代次数加密模块M904内部,首先获取所有密钥整数的平均数;然后提取所述平均数的小数部分;接着根据所述小数部分和预设定的迭代次数进行Logistic迭代;再将迭代结果换算成整数。
迭代加密模块M905用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果。在迭代加密模块M905内部,首先,获取每一个密钥的字节,并转换为整数;然后换算成0~1的小数(X0);接着根据生成的第二迭代系数和第二迭代次数,进行密钥迭代;再将生成的迭代结果换算成整数。
验证码加密模块M907用于根据明文内容生成验证码。在所述验证码加密模块M907内部,首先提取一组明文数据;然后提取明文数据变换成的小数部分,并生成第三迭代系数;接着获取第三迭代次数;再根据所述第三迭代次数和所述第三迭代系数,执行Logistic迭代;并将迭代结果换算成整数。
一种基于混沌变换的文件解密系统,包括以下模块:预处理解密模块M1001、验证码初始值解密模块M1002、第二迭代系数解密模块M1003、第二迭代次数解密模块M1004、迭代解密模块M1005、异或解密模块M1006、明文解密模块M1007、验证码解密模块M1008、第一判断解密模块M1009和第二判断解密模块M1010;所述预处理解密模块M1001用于预处理解密密钥和密文;所述验证码初始值解密模块M1002与所述的预处理解密模块M1001连接,用于生成验证码初始值;所述第二迭代系数解密模块M1003与所述的验证码初始值解密模块M1002连接,用于获取第二迭代系数;所述第二迭代次数解密模块M1004与所述的第二迭代系数解密模块M1003连接,用于获取第二迭代次数;所述迭代解密模块M1005与所述第二迭代次数解密模块M1004连接,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果;所述异或解密模块M1006与所述迭代解密模块M1005连接,用于对所述迭代结果和密文进行异或操作;所述明文解密模块M1007与所述异或解密模块M1006连接,用于将根据异或操作的结果写入文件中,并生成明文;所述验证码解密模块M1008与所述明文解密模块M1007连接,用于根据所述异或操作的结果生成验证码;所述第一判断解密模块M1009与所述验证码解密模块M1008连接,用于判断Logistic迭代是否执行至所述解密内容的尾部;所述第二判断解密模块M1010与所述第一判断解密模块M1009连接,用于判断解密迭代的结果取整和最后一组下一次Logistic迭代的解密密钥,是否与保存的验证码一致。
其中,预处理解密模块M1001用于预处理解密密钥和密文。在所述预处理解密模块M1001内部,首先判断解密内容是否为文件;然后获取所述解密内容的信息指纹;再获取第一迭代系数和第一迭代次数,并通过Logistic迭代式使得系统进入混沌状态。
第二迭代系数解密模块M1003用于获取第二迭代系数。在所述第二迭代系数解密模块M1003内部,首先获取多个密钥数的平均数;然后提取所述平均数的小数部分;接着执行Logistic迭代式规则计算。
第二迭代次数解密模块M1004用于获取第二迭代次数。在所述第二迭代次数加密模块M1004内部,首先获取所有密钥整数的平均数;然后提取所述平均数的小数部分;接着根据所述小数部分和预设定的迭代次数进行Logistic迭代;再将迭代结果换算成整数。
迭代解密模块M1005,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果。在迭代解密模块M1005内部,首先,获取每一个密钥的字节,并转换为整数;然后换算成0~1的小数(X0);接着根据生成的第二迭代系数和第二迭代次数,进行密钥迭代;再将生成的迭代结果换算成整数。
验证码解密模块M1008用于根据明文内容生成验证码。在所述验证码解密模块M1008内部,首先提取一组明文数据;然后提取明文数据变换成的小数部分,并生成第三迭代系数;接着获取第三迭代次数;再根据所述第三迭代次数和所述第三迭代系数,执行Logistic迭代;并将迭代结果换算成整数。
本发明所述基于混沌变换的文件加解密系统正是利用混沌特性和多随机特性,增加了解密的难度,提高了加密数据的安全性,实现了密钥的随机生成和加密算法的随机调用,使得加密后的文件更加安全,适用于手机等系统的文件保密。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种基于混沌变换的文件加密方法,其特征在于,包括以下步骤:
(a1)对用于加密内容的密码进行预处理;
(a2)提取一组明文数据,生成一组验证码的初始值;
(a3)获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;
(a4)根据所述第二迭代系数和所述第二迭代次数以执行密钥迭代,生成迭代结果;
(a5)对所述迭代结果和明文数据进行异或操作;
(a6)根据明文数据生成验证码;
(a7)将异或操作的结果写入文件中,并生成密文;
(a8)判断密钥迭代是否执行至所述加密内容的尾部,若是,则执行步骤(a9);否则,继续执行步骤(a4);
(a9)将所述明文数据依次Logistic迭代的迭代结果和所有所述迭代结果转换成的整数,以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
2.根据权利要求1所述的基于混沌变换的文件加密方法,其特征在于,在步骤(a1)中,进一步包括以下子步骤:
(a11)判断加密内容是否为文件,若是,则对加密内容加上字符“F”;否则,则对加密内容加上字符“W”;
(a12)获取所述加密内容的信息指纹;
(a13)判断密钥的长度是否大于所述加密内容的长度,若是,则执行步骤(a14);否则,执行步骤(a15);
(a14)减少密钥长度变换;
(a15)获取第一迭代系数和第一迭代次数;
(a16)根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统快速进入混沌状态。
3.根据权利要求1所述的基于混沌变换的文件加密方法,其特征在于,在步骤(a3)中,进一步包括以下子步骤:
(a31)获取多个密钥数的平均数;
(a32)提取所述平均数的小数部分;
(a33)执行规则计算,以保证所述第二迭代系数满足混沌变换的条件;
(a34)获取所有密钥整数的平均数;
(a35)提取所述平均数的小数部分;
(a36)根据所述小数部分和预设定的迭代次数进行Logistic迭代;
(a37)将迭代结果换算成整数。
4.根据权利要求1所述的基于混沌变换的文件加密方法,其特征在于,在步骤(a6)中,进一步包括以下子步骤:
(a61)提取一组明文数据;
(a62)提取明文数据变换成的小数部分,并生成第三迭代系数;
(a63)获取第三迭代次数;
(a64)根据所述第三迭代次数和所述第三迭代系数,执行Logistic迭代;
(a65)将迭代结果换算成整数。
5.一种基于混沌变换的文件解密方法,其特征在于,包括以下步骤:
(b1)对解密密钥和密文进行预处理;
(b2)提取一组明文数据,生成一组验证码的初始值;
(b3)获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;
(b4)根据所述第二迭代系数和所述第二迭代次数以执行Logistic迭代,生成迭代结果;
(b5)对所述迭代结果和密文进行异或操作;
(b6)将异或操作的结果写入文件中,并生成明文;
(b7)根据异或操作的结果生成验证码;
(b8)判断Logistic迭代是否执行至所述解密内容的尾部,若是,则执行步骤(b9);否则,继续执行步骤(b4);
(b9)判断解密迭代的迭代结果取整和最后一组下一次Logistic迭代的解密密钥,是否与保存的验证码一致,若一致,则解密成功;否则,则解密失败。
6.根据权利要求5所述的基于混沌变换的文件解密方法,其特征在于,在步骤(b1)中,进一步包括以下子步骤:
(b11)判断解密内容是否为文件,若是,则对解密内容加上字符“F”;否则,则对解密内容加上字符“W”;
(b12)获取所述解密内容的信息指纹;
(b13)判断解密内容的长度是否小于所述密钥的长度的2倍;若是,则执行步骤(b14);否则,执行步骤(b17);
(b14)减少密钥长度变换;
(b15)提取解密数据,生成解密密文和验证码;
(b16)提取部分的解密数据作为验证码,设置另一部分的解密数据作为解密密文;
(b17)获取第一迭代系数和第一迭代次数;
(b18)根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统进入混沌状态。
7.一种基于混沌变换的文件加密系统,其特征在于,包括以下模块:预处理加密模块、验证码初始值加密模块、第二迭代系数加密模块、第二迭代次数加密模块、迭代加密模块、异或加密模块、验证码加密模块、密文加密模块、第一判断加密模块和保存加密模块;
所述预处理加密模块用于预处理用于加密内容的密码;
所述验证码初始值加密模块与所述的预处理加密模块连接,用于生成验证码初始值;
所述第二迭代系数加密模块与所述的验证码初始值加密模块连接,用于获取第二迭代系数;
所述第二迭代次数加密模块与所述的第二迭代系数加密模块连接,用于获取第二迭代次数;
所述迭代加密模块与所述第二迭代次数加密模块连接,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果;
所述异或加密模块与所述迭代加密模块连接,用于对所述迭代结果和明文数据进行异或操作;
所述验证码加密模块与所述异或加密模块连接,用于根据明文数据生成验证码;
所述密文加密模块与所述验证码加密模块连接,用于将异或操作的结果写入文件,并生成密文;
所述第一判断加密模块与所述密文加密模块连接,用于判断密钥迭代是否执行至所述加密内容的尾部;
所述保存加密模块与所述第一判断加密模块连接,用于将明文数据依次Logistic迭代的结果和所有所述迭代结果转换成的整数,以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
8.一种基于混沌变换的文件解密系统,其特征在于,包括以下模块:预处理解密模块、验证码初始值解密模块、第二迭代系数解密模块、第二迭代次数解密模块、迭代解密模块、异或解密模块、明文解密模块、验证码解密模块、第一判断解密模块和第二判断解密模块;
所述预处理解密模块用于预处理解密密钥和密文;
所述验证码初始值解密模块与所述的预处理解密模块连接,用于生成验证码初始值;
所述第二迭代系数解密模块与所述的验证码初始值解密模块连接,用于获取第二迭代系数;
所述第二迭代次数解密模块与所述的第二迭代系数解密模块连接,用于获取第二迭代次数;
所述迭代解密模块与所述第二迭代次数解密模块连接,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果;
所述异或解密模块与所述迭代解密模块连接,用于对所述迭代结果和密文进行异或操作;
所述明文解密模块与所述异或解密模块连接,用于将根据异或操作的结果写入文件中,并生成明文;
所述验证码解密模块与所述明文解密模块连接,用于根据所述异或操作的结果生成验证码;
所述第一判断解密模块与所述验证码解密模块连接,用于判断Logistic迭代是否执行至所述解密内容的尾部;
所述第二判断解密模块与所述第一判断解密模块连接,用于判断解密迭代的结果取整和最后一组下一次Logistic迭代的解密密钥,是否与保存的验证码一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210289454.6A CN103595523B (zh) | 2012-08-15 | 2012-08-15 | 基于混沌变换的文件加解密方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210289454.6A CN103595523B (zh) | 2012-08-15 | 2012-08-15 | 基于混沌变换的文件加解密方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103595523A true CN103595523A (zh) | 2014-02-19 |
CN103595523B CN103595523B (zh) | 2017-02-08 |
Family
ID=50085517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210289454.6A Expired - Fee Related CN103595523B (zh) | 2012-08-15 | 2012-08-15 | 基于混沌变换的文件加解密方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103595523B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762734A (zh) * | 2018-06-19 | 2018-11-06 | 驿涛科技股份有限公司 | 一种基于大数据的软件开发方案的生成方法及系统 |
WO2019214025A1 (zh) * | 2018-05-11 | 2019-11-14 | 吉林大学珠海学院 | 基于双密钥流密码的双向链表顺序加密解密方法 |
CN112636911A (zh) * | 2021-01-05 | 2021-04-09 | 杜瑞峰 | 一种非联网设备接龙取值变函数序列密码生成方式 |
CN117544292A (zh) * | 2023-11-09 | 2024-02-09 | 南京普爱医疗设备股份有限公司 | 一种基于cbct影像设备的加密系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330378A (zh) * | 2008-07-07 | 2008-12-24 | 武汉大学 | 混沌序列产生方法 |
-
2012
- 2012-08-15 CN CN201210289454.6A patent/CN103595523B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330378A (zh) * | 2008-07-07 | 2008-12-24 | 武汉大学 | 混沌序列产生方法 |
Non-Patent Citations (3)
Title |
---|
乔志伟等: "基于一维混沌映射的文件加密算法设计与实现", 《中北大学学报(自然科学版)》, vol. 28, no. 62007, 31 December 2007 (2007-12-31), pages 4 * |
邓绍江等: "基于Logistic 映射混沌加密算法的设计与实现", 《重庆大学学报》, vol. 27, no. 42004, 30 April 2004 (2004-04-30) * |
靳冰等: "基于Logistic 的混沌双重加密研究", 《计算机与数字工程》, no. 12011, 31 January 2011 (2011-01-31) * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019214025A1 (zh) * | 2018-05-11 | 2019-11-14 | 吉林大学珠海学院 | 基于双密钥流密码的双向链表顺序加密解密方法 |
US11184154B2 (en) | 2018-05-11 | 2021-11-23 | Zhuhai College Of Jilin University | Method for sequentially encrypting and decrypting doubly linked lists based on double key stream ciphers |
CN108762734A (zh) * | 2018-06-19 | 2018-11-06 | 驿涛科技股份有限公司 | 一种基于大数据的软件开发方案的生成方法及系统 |
CN112636911A (zh) * | 2021-01-05 | 2021-04-09 | 杜瑞峰 | 一种非联网设备接龙取值变函数序列密码生成方式 |
CN117544292A (zh) * | 2023-11-09 | 2024-02-09 | 南京普爱医疗设备股份有限公司 | 一种基于cbct影像设备的加密系统 |
CN117544292B (zh) * | 2023-11-09 | 2024-04-26 | 南京普爱医疗设备股份有限公司 | 一种基于cbct影像设备的加密系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103595523B (zh) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8300828B2 (en) | System and method for a derivation function for key per page | |
CN108809626A (zh) | 一种白盒sm4密码算法方案与系统 | |
Debnath et al. | Brief review on journey of secured hash algorithms | |
US20150312039A1 (en) | Behavioral fingerprint in a white-box implementation | |
US11436946B2 (en) | Encryption device, encryption method, decryption device, and decryption method | |
US9847879B2 (en) | Protection against passive sniffing | |
Meijer et al. | Ciphertext-only cryptanalysis on hardened Mifare classic cards | |
CN111010266B (zh) | 消息的加解密、读写方法、装置、计算机设备和存储介质 | |
US20110026712A1 (en) | Concealing plain text in scrambled blocks | |
CN113098675A (zh) | 基于多项式完全同态的二进制数据加密系统及方法 | |
CN103595523A (zh) | 基于混沌变换的文件加解密方法及其系统 | |
Tiwari | Cryptography in blockchain | |
Liu et al. | Exploiting lsb self-quantization for plaintext-related image encryption in the zero-trust cloud | |
US10673610B2 (en) | System and method for protecting a cryptographic device against fault attacks while performing cryptographic non-linear operations using linear error correcting codes | |
CN110889695A (zh) | 基于安全多方计算保存和恢复隐私数据的方法和装置 | |
CN116566584B (zh) | 基于Henon混沌系统加密的可编程控制器通信方法 | |
EP2940917B1 (en) | Behavioral fingerprint in a white-box implementation | |
CN116796345A (zh) | 加解密方法、装置、设备及存储介质 | |
EP3054620A1 (en) | System and method for performing block cipher cryptography by implementing a mixer function that includes a substitution-box and a linear transformation using a lookup-table | |
CN114221753B (zh) | 密钥数据处理方法和电子设备 | |
CN113784342B (zh) | 一种基于物联网终端的加密通讯方法及系统 | |
CN116248316A (zh) | 文件加密方法、文件解密方法、装置及存储介质 | |
KR101026647B1 (ko) | 통신 보안 시스템 및 그 방법과 이에 적용되는 키 유도 암호알고리즘 | |
Sri et al. | Concealing the Data Using Cryptography | |
JP2015082077A (ja) | 暗号化装置、制御方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170208 Termination date: 20200815 |
|
CF01 | Termination of patent right due to non-payment of annual fee |