基于混沌变换的文件加解密方法及其系统的制作方法

文档序号:7982001阅读:191来源:国知局
基于混沌变换的文件加解密方法及其系统的制作方法
【专利摘要】一种基于混沌变换的文件加密方法,包括:(a1)对用于加密内容的密码进行预处理;(a2)提取一组明文数据,生成一组验证码的初始值;(a3)获取第二迭代系数和第二迭代次数;(a4)根据所述第二迭代系数和所述第二迭代次数以执行密钥迭代,生成迭代结果;(a5)对迭代结果和明文数据进行异或操作;(a6)根据明文数据生成验证码;(a7)将异或操作的结果写入文件中,并生成密文;(a8)判断密钥迭代是否执行至所述加密内容的尾部,若是,则执行步骤(a9);否则,继续执行步骤(a4);(a9)将明文数据依次迭代的迭代结果和所有所述迭代结果转换成的整数,以及最后一组下一次迭代生成的加密密钥保存至加密内容的末尾。
【专利说明】基于混沌变换的文件加解密方法及其系统
【技术领域】
[0001]本发明涉及信息安全【技术领域】,尤其涉及一种可快速地对文件进行加解密方法及 其系统,适用于手机、笔记本、平板电脑等需要对隐私文件进行保密的领域。
【背景技术】
[0002]在计算机中,文件是数据的一种组织形式,为了保证文件在存储、传输和使用过程 中的安全,必须对它进行加密处理。一般是通过密码系统以实现加密处理。而密码系统是 基于数学原理对原始信息加密和对加密的信息进行解密。目前,对文件的加密主要有身份 验证式密码加密和文件内容加密两种方式。所述身份验证式密码加密是指根据用户所知道 的密码信息来证明用户的身份,例如,静态密码,短信密码或数字签名。而所述文件内容加 密主要通过以下密码技术对文件内容进行加密,包括对称密码和非对称密码,其中对称密 码可能是分组密码,也可能采用流密码。所述身份式密码加密相对容易被破解,文件内容加 密存在着加密解密速度慢和加密强度不够等问题。

【发明内容】

[0003]本发明的目的在于解决上述问题,提供一种基于混沌变换的文件加解密方法。所 述方法利用混沌变换的方法,实现了多随机性的文件加密算法。本发明通过混沌特性和多 随机特性,增加了对文件解密的难度,提高了加密数据的安全性,实现了密钥的随机生成和 加密算法的随机调用,使得加密后的文件更加安全,而运算相对比较简单,尤其适用于手 机、电脑等系统的文件保密。
[0004]为实现上述的目的,本发明采用下述技术方案。
[0005]一种基于混沌变换的文件加密方法,包括以下步骤:
(al)对用于加密内容的密码进行预处理;
(a2)提取一组明文数据,生成一组验证码的初始值;
(a3)获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;
(a4)根据所述第二迭代系数和所述第二迭代次数以执行密钥迭代,生成迭代结果; (a5)对所述迭代结果和明文数据进行异或操作;
(a6)根据明文数据生成验证码;
(a7)将异或操作的结果写入文件中,并生成密文;
(a8)判断密钥迭代是否执行至所述加密内容的尾部,若是,则执行步骤(a9);否则,继 续执行步骤(a4);
(a9)将明文数据依次Logistic迭代的迭代结果和所有所述迭代结果转换成的整数, 以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
[0006]进一步,在步骤(al)中,进一步包括以下子步骤:
(a 11)判断加密内容是否为文件,若是,则对加密内容加上字符“ F ” ;否则,则对加密内 容加上字符“W” ;(al2)获取所述加密内容的信息指纹;
(al3)判断密钥的长度是否大于所述加密内容的长度,若是,则执行步骤(al4);否则, 执行步骤(al5);
(al4)减少密钥长度变换;
(al5)获取第一迭代系数和第一迭代次数;
(al6)根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统快速 进入混沌状态。
[0007]进一步,在步骤(a3)中,进一步包括以下子步骤:
(a31)获取多个密钥数的平均数;
(a32)提取所述平均数的小数部分;
(a33)执行规则计算,以保证所述第二迭代系数满足混沌变换的条件;
(a34)获取所有密钥整数的平均数;
(a35)提取所述平均数的小数部分;
(a36)根据所述小数部分和预设定的迭代次数进行Logistic迭代;
(a37)将迭代结果换算成整数。
[0008]进一步,在步骤(a6)中,进一步包括以下子步骤:
(a61)提取一组明文数据;
(a62)提取明文数据变换成的小数部分,并生成第三迭代系数;
(a63)获取第三迭代次数;
(a64)根据所述第三迭代次数和所述第三迭代系数,执行Logistic迭代;
(a65)将迭代结果换算成整数。
一种基于混沌变换的文件解密方法,包括以下步骤:
(bl)对解密密钥和密文进行预处理;
(b2)提取一组明文数据,生成一组验证码的初始值;
(b3)获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;
(b4)根据所述第二迭代系数和所述第二迭代次数以执行Logistic迭代,生成迭代结
果;
(b5)对所述迭代结果和密文进行异或操作;
(b6)将异或操作的结果写入文件中,并生成明文;
(b7)根据异或操作的结果生成验证码;
(b8)判断Logistic迭代是否执行至所述解密内容的尾部,若是,则执行步骤(b9);否 贝U,继续执行步骤(b4);
(b9)判断解密迭代的迭代结果取整和最后一组下一次Logistic迭代的解密密钥,是 否与保存的验证码一致,若一致,则解密成功;否则,则解密失败。
[0009]进一步,在步骤(bl)中,进一步包括以下子步骤:
(bll)判断解密内容是否为文件,若是,则对解密内容加上字符“F”;否则,则对解密内 容加上字符“W” ;
(bl2)获取所述解密内容的信息指纹;
(bl3)判断解密内容的长度是否小于所述密钥的长度的2倍;若是,则执行步骤(bl4);否则,执行步骤(bl7);
(bl4)减少密钥长度变换;
(bl5)提取解密数据,生成解密密文和验证码;
(bl6)提取部分的解密数据作为验证码,设置另一部分的解密数据作为解密密文; (bl7)获取第一迭代系数和第一迭代次数;
(bl8)根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统进入 混沌状态。
[0010]本发明的另一个目的是提供一种基于混沌变换的文件加密系统以及解密系统。
[0011]为实现上述的目的,本发明采用下述技术方案。
[0012]一种基于混沌变换的文件加密系统,包括以下模块:预处理加密模块、验证码初始 值加密模块、第二迭代系数加密模块、第二迭代次数加密模块、迭代加密模块、异或加密模 块、验证码加密模块、密文加密模块、第一判断加密模块和保存加密模块;
所述预处理加密模块用于预处理用于加密内容的密码;
所述验证码初始值加密模块与所述的预处理加密模块连接,用于生成验证码初始值; 所述第二迭代系数加密模块与所述的验证码初始值加密模块连接,用于获取第二迭代 系数;
所述第二迭代次数加密模块与所述的第二迭代系数加密模块连接,用于获取第二迭代 次数;
所述迭代加密模块与所述第二迭代次数加密模块连接,用于根据第二迭代系数和第二 迭代次数以执行密钥迭代,并生成迭代结果;
所述异或加密模块与所述迭代加密模块连接,用于对所述迭代结果和明文数据进行异 或操作;
所述验证码加密模块与所述异或加密模块连接,用于根据明文数据生成验证码;
所述密文加密模块与所述验证码加密模块连接,用于将异或操作的结果写入文件,并 生成密文;
所述第一判断加密模块与所述密文加密模块连接,用于判断密钥迭代是否执行至所述 加密内容的尾部;
所述保存加密模块与所述第一判断加密模块连接,用于将明文数据依次Logistic迭 代的结果和所有所述迭代结果转换成的整数,以及最后一组下一次Logistic迭代生成的 加密密钥保存至加密内容的末尾。
[0013]一种基于混沌变换的文件解密系统,包括以下模块:预处理解密模块、验证码初始 值解密模块、第二迭代系数解密模块、第二迭代次数解密模块、迭代解密模块、异或解密模 块、明文解密模块、验证码解密模块、第一判断解密模块和第二判断解密模块;
所述预处理解密模块用于预处理解密密钥和密文;
所述验证码初始值解密模块与所述的预处理解密模块连接,用于生成验证码初始值; 所述第二迭代系数解密模块与所述的验证码初始值解密模块连接,用于获取第二迭代 系数;
所述第二迭代次数解密模块与所述的第二迭代系数解密模块连接,用于获取第二迭代 次数;所述迭代解密模块与所述第二迭代次数解密模块连接,用于根据第二迭代系数和第二 迭代次数以执行密钥迭代,并生成迭代结果;
所述异或解密模块与所述迭代解密模块连接,用于对所述迭代结果和密文进行异或操
作;
所述明文解密模块与所述异或解密模块连接,用于将根据所述异或操作的结果写入文 件中,并生成明文;
所述验证码解密模块与所述明文解密模块连接,用于根据异或操作的结果生成验证
码;
所述第一判断解密模块与所述验证码解密模块连接,用于判断Logistic迭代是否执 行至所述解密内容的尾部;
所述第二判断解密模块与所述第一判断解密模块连接,用于判断解密迭代的结果取整 和最后一组下一次Logistic迭代的解密密钥,是否与保存的验证码一致。
[0014]本发明的优点在于:
(I)利用混沌特性和多随机特性,增加了对文件解密的难度,使加密的信息具有很高 的保密度。
[0015](2)利用混沌加密的特性(其处理速度和密钥长度无关),可以快速对文件内容进 行加密,使得本发明适用于实时信号处理和静态加密场合。
[0016](3)当加密后的文件内容中有几个字节存在错误,但是通过本发明所采用的算 法,还是可以成功解密出其他的内容。
[0017](4)本发明输入的密码字符可以是任意的,长度也是任意的,也可以是文件,可以 实现用文件来加密文件。
【专利附图】

【附图说明】
[0018]图1是本发明所述一种基于混沌变换的文件加密方法的具体实施步骤的流程示 意图。
[0019]图2是本发明对用于加密内容的密码进行预处理的流程示意图。
[0020]图3是本发明所述迭代系数生成流程示意图。
[0021]图4是本发明所述迭代次数生成流程示意图。
[0022]图5是本发明密钥混沌变换流程示意图。
[0023]图6是本发明验证码生成流程示意图。
[0024]图7是本发明所述一种基于混沌变换的文件解密方法的具体实施步骤的流程示 意图。
[0025]图8是本发明对解密密钥和密文预处理的流程示意图。
[0026]图9是本发明所述基于混沌变换的文件加密系统的示意图。
[0027]图10是本发明所述基于混沌变换的文件解密系统的示意图。
【具体实施方式】
[0028]下面结合附图对本发明基于混沌变换的文件加解密方法及其系统的具体实施方 式做详细说明。[0029]参见图1,一种基于混沌变换的文件加密方法,包括以下步骤:S101、对用于加密 内容的密码进行预处理;S102、提取一组明文数据,生成一组验证码的初始值;S103、获取 第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;S104、根据所述第二迭代系数和 所述第二迭代次数以执行密钥迭代,生成迭代结果;S105、对所述迭代结果和明文数据进行 异或操作;S106、根据明文数据生成验证码;S107将异或操作的结果写入文件中,并生成密 文;S108、判断密钥迭代是否执行至所述加密内容的尾部,若是,则执行步骤S109 ;否则,继 续执行步骤S104 ;S109、将明文数据依次Logistic迭代的迭代结果和所有所述迭代结果转 换成的整数,以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
[0030]其中,步骤SlOl包括以下子步骤,参见图2所示,具体包括:S201、判断加密内容是 否为文件,若是,则对加密内容加上字符“F”;否则,则对加密内容加上字符“W”;S202、获取 所述加密内容的信息指纹;S203、判断密钥的长度是否大于所述加密内容的长度,若是,则 执行步骤S204 ;否则,执行步骤S205 ;S204、减少密钥长度变换;S205、获取第一迭代系数和 第一迭代次数;S206、根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使 系统快速进入混沛状态。
[0031]其中,所述步骤S103包括以下子步骤,参见图3和图4所示,具体包括:S301获 取多个密钥数的平均数;S302、提取所述平均数的小数部分;S303、执行Logistic迭代式 规则计算,以保证所述第二迭代系数满足混沌变换的条件;S401、获取所有密钥整数的平均 数;S402、提取所述平均数的小数部分;S403、根据所述小数部分和预设定的迭代次数进行 Logistic迭代;S404、将迭代结果换算成整数。
[0032]所述步骤S104包括以下子步骤,参见图5所示,具体包括:S501、获取每一个密钥 的字节,并转换为整数。S502、换算成0?I的小数(X0)。S503、根据生成的第二迭代系数 和第二迭代次数,进行密钥迭代。S504、将生成的迭代结果换算成整数。
[0033]所述步骤S106包括以下子步骤,参见图6所示,具体包括:S601、提取一组明文数 据;S602、提取明文数据变换成的小数部分,并生成第三迭代系数;S603、获取第三迭代次 数;S604、根据所述第三迭代次数和所述第三迭代系数,执行Logistic迭代;S605、将迭代 结果换算成整数。
[0034]参见图7,一种基于混沌变换的文件解密方法的具体实施步骤的流程示意图,包括 以下步骤:S701、对解密密钥和密文进行预处理。S702、提取一组明文数据,生成一组验证 码的初始值。S703、获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数。S704、 根据所述第二迭代系数和所述第二迭代次数以执行Logistic迭代,生成迭代结果。S705、 对所述迭代结果和密文进行异或操作。S706、将异或操作的结果写入文件中,并生成明文。 S707、根据异或操作的结果生成验证码。S708、判断Logistic迭代是否执行至所述解密内 容的尾部,若是,则执行步骤S709 ;否则,继续执行步骤S704。S709、判断解密迭代的迭代结 果取整和下一次变换的解密密钥,是否与保存的验证码一致,若一致,则解密成功;否则,则 解密失败。
[0035]其中,步骤701包括以下子步骤,参见图8所示。具体包括:S801、判断解密内容 是否为文件,若是,则对解密内容加上字符“F” ;否则,则对解密内容加上字符“W” ;S802、获 取所述解密内容的信息指纹;S803、判断解密内容的长度是否小于所述密钥的长度的2倍; 若是,则执行步骤S804 ;否则,执行步骤S806 ;S804、减少密钥长度变换,变换到解密内容长度的2分之一 ;S805、提取解密数据,生成解密密文和验证码;S806、提取部分的解密数据作 为验证码,设置另一部分的解密数据作为解密密文;S807、获取第一迭代系数和第一迭代次 数;S808、根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统进入混 沌状态。
[0036]本发明所述基于混沌变换的文件加密方法及其解密方法,是利用混沌变换的方法 而设计了一种多随机性的文件内容加密算法。由于近来混沌理论日趋成熟,为混沌变换在 通信等领域的应用提供了理论基础。混沌信号的非周期性连续宽带频谱,类似噪声的特性。 另外,混沌信号对初始条件的高度敏感,即使两个完全相同的混沌系统从近乎相同的初始 条件开始演化,其轨道将很快变得互不相关,这使得混沌信号具有长期不可预测性和抗截 获能力及复杂的运动轨迹,这使得混沌信号具有较高的复杂度。同时混沌系统本身具有确 定性,由非线性系统的方程、参数和初始条件所决定,因此,混沌信号易于产生复制。混沌信 号的隐蔽性、不可预测性、高复杂度和易于实现等特性都适合于保密通信。与其他加密方法 不同的是,混沌加密是一种动态加密方法,由于其处理速度和密钥长度无关,因此这种方法 的计算效率高、可用于实时信号处理和静态加密场合。而且用此方法加密的信息很难破译, 具有很高的保密度。本发明的加解密方法正是利用混沌特性和多随机特性,增加了解密的 难度,提高了加密数据的安全性,实现了密钥的随机生成和加密算法的随机调用,使得加 密后的文件更加安全,而运算相对比较简单,基本上都是加减乘除,是一种适用于手机等系 统的文件保密方法。本发明基于混沌变换的文件加密方法及其解密方法,在加解密过程中, 利用 Logistic 模型:X_n+l=u*Xn(l-Xn),其中 u 为参数,3.5699456〈u〈=4,0〈Xi〈l,此时该 Logistic迭代式呈混沌特性。参数u(或称为迭代系数)也是由所输入的密码字符通过类似 的混沌变换所得。加密时,先把输入的密码字符通过取信息指纹的方法转换成一串散列字 符密钥,如果这个散列字符密钥比要加密的数据长度大,则把这个散列密钥重新变换,使其 长度等于加密的文件数据长度。加密时以把加密密钥转化为一个字节(一个字节可以表示 0-255的数据)的整数数组,对所述整数数组的每一个数转化为Logistic迭代式中的Xi参 数,再用另一个Logistic迭代式产生的数作为该次变换的迭代次数,即获取Logistic迭代 式的参数:迭代系数和迭代次数,并根据输入的密钥的平均数获得X0,然后根据Logistic 迭代式,进行依次迭代。
[0037]Xi每次迭代的结果生成一个密钥数据,用其与明文数据做异或操作,生成密文整 数,并将所述密文整数作为最后的加密结果予以保存。按着加密密钥数组的长度依次循环, 直至明文的每一个数据都被加密。解密时根据输入的密码用同样的方法生成Logistic迭 代后的密钥数据,所述密钥数据与要解密的数据做异或操作,即可获得解密数据。
[0038]为了判断解密后的文件内容是否完全解密成功,可以在加密的过程中每次读取一 组明文数据时,把明文数据转换成迭代次数、迭代系数,初始值取第一次获得的明文数据, 转换的方法与密钥的处理流程一样,循环迭代,最后把该组迭代数据保存在其他地方(验证 码)。解密时,提取密钥数据,并与要解密的数据进行异或操作,生成该组数据。同时,按照 相同的方法转换获得验证码,判断其与保存数据是否一致,即可判断是否解密成功。
[0039]接下来将给出一个具体实施例,并结合上述的本发明所述基于混沌变换的文件加 密方法,对本发明作出进一步详细的描述。
[0040]假如要加密的文件内容为:Hell0W0rld,加密的密码是一个字符串: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所示,(参见步骤3201)此处应加上字符“胃”为:W1234,取MD5和CRC32信息指纹分别为 A1A013C329E63ACE7AB85AFD17319350、F6B6DB79,混和在一起为 A1A013C329E63ACE7AB8 5AFD17319350 F6B6DB79,这些数都是16进制的。(参见步骤S202 )获取所述加密内容的信息指纹。除了上述的MD5和CRC32之外,还可以获取SHAR1、SHAR2或MD4等。于是,进行如下 16进制转10进制的转换-.Al转换成十进制数即为161,AO即为160…以此类推,于是AlAO 13C329E63ACE7AB85AFD17319350F6B6DB79 则可写成 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.4X0.4+3.6=3.76 (参见步骤S302),3.76即为密钥加密的第一迭代系数(参见图3所示)。根据Logistic迭代式混沛成的条件是系数取值范围3.5699456〈u〈=4,在本发明具体实施例中,取值a*0.4+3.6 (a是平均数的小数部分,即0〈=a〈l),刚好处于大于等于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)X0.8+0.1=0.887451,第二个数字(158/255) X0.8+0.1=0.5956863…以此类推。 其中,所述密钥中各个数字b的取值范围为:0〈=b〈=255,那么应该是(b/255)*0.8+0.1,可以得到0.K= (b/255)*0.8+0.1 <=0.9,如此设置可以较大程度地利用Logistic迭代式的混沌变换成立条件,初始值的成立条件0〈X0〈1,做到最大程度的线性改变相关性,以及最容易计算。再将这些小数代入Logistic迭代式X_n+l=3.76*Xn(1-Xn)中。设置迭代次数为 20次(预设定的迭代次数,或称第一迭代次数),是因为20次迭代之后,可以保证快速进入混沌状态,同时又能兼顾效率,不至于花费太多时间。根据Logistic迭代式,密钥长度减少生成的第一个数字251迭代20次为0.822016,密钥中其余9个数也以此完成上述的迭代后 (参见图2所示),这时进入加密流程。
`[0041]参见图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),取小数部分生成XO=0.7。迭代系数取后五个数的平均数(55+49+135+86+ 50)/5=75.0,提取小数部分Y0=0。第一次是取前10 个数的平均数,第二次是取后5个数的平均数,如此获取平均数,具有以下好处:1).随机性较好,其他人很难从这些平均数的小数部分推算出密钥的数学特征,故保密性较好。2).计算简单快捷。
[0042]若取后5个数以生成迭代系数,根据a*0.4+3.6可以得到0X0.4+3.6=3.6, 3.6即为加密Logistic迭代式的迭代系数(或称第二迭代系数)。再按迭代式X_ n+l=3.6*Xn(1-Xn)迭代20次后生成的小数为0.433631,换算成整数,直接取小数后的第一位即可即为4,4即为加解密时的迭代次数(或称第二迭代次数),参见图5每次加解密迭代次数都是不一样的。第一个密钥251迭代20次后的小数0.822016,再通过X_ n+l=3.76*Xn (1-Xn)迭代 4 次,变为 0.691593,取整为(0.691593 X 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 进行异或操作。
[0043]在本发明具体实施例中采用异或操作,是由于异或操作在计算机上是一种比较快捷的可逆的操作,例如:如果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。
[0044]生成验证码的过程如下:(72/255) X0.4+3.6=3.7129412为第三迭代系数,初始值为(72/255) X0.8+0.1=0.325882353,验证码的迭代次数和密钥的迭代次数是一样的,迭代次数也为4,代入Logistic迭代式后,3.7129412* Xn(1-Xn)迭代四次得到0.2868083...以此类推,依次按照相同的方法对后面的数进行处理,得到这样的一组小数,这组小数作为下一次的迭代初始值,下一次迭代重新按照相同规则由明文数据生成迭代系数,如图6。最后再进行这样操作如(0.2868083X1000取整)%255=286%255=31,最后生成31 126 13 13 59 65 59 96 13 103 这样一组数据。
[0045]下一次加解密密钥:根据图4所示,生成下一次的迭代次数。已知XO=0.7,迭代系数为3.6,与设定迭代次数为21次,则当X_n+1=3.6*Xn (1-Xn)迭代21次(即首次迭代20次后进入混沌状态,再循环迭代I次,共计21次)后生成的小数为0.884143,(0.884143X10) 取整即为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 I 249 92 44 25 241 120 81。最终的加密数据为 253 196 74 87 195 107 143 151 186 109 12 160 I 249 92 44 25 241 120 81。
[0046]解密是加密的逆过程,由上面的变换得知,输入密码并提取信息指纹后的密钥长度为20,而密文也为20 (含验证码),密文的长度小于取信息指纹后的密钥长度的2倍 (20〈20*2),所以,可以判定密文的前一半为加密的数据,后一半为验证码。然后做同样的 Logistic迭代式的变换,如果输入密码正确,则可由同样的变换得到最后的密钥181 16138 59 172 60 224 229 214 9 (不依赖于要加解密的数据,只与加解密的数据长度 和输入的密码有关)。与密文253 196 74 87 195 107 143 151 186 109依次异 或,得到明文数据。如181与253异或操作,得到72,正是明文的数据。解密内容正确,就能 按照同样的规则再一次正确生成验证码,最后与加密时保存的验证码比较,从而可以确定 是否最终解密成功。如果输入的密码不正确,则会通过混沌迭代依次把这种差异放大,当然 也就不能正确的解密内容,如图8。
[0047]本发明所述方法中采用验证码是为了验证解密是否成功。验证码是在加密或解 密完全完成后才最终生成的,如果解密者想要通过穷举攻击(一个一个密码的尝试)来破 解,那就只能等到把整个密文都解密完全才能知道解密是否成功,整个解密过程是不会报 错的,这与常见的例如RAR解密不同,RAR解密时如果密码不正确,那么立即知道解密是否 成功。所以,通过采用验证码,可以有效防止穷举攻击。此外,本发明具有一定的容错性,与 RAR压缩加密不同(如果加密后RAR文件错误,则整个文件都不能解密)。本发明所采用的算 法,当加密后的文件内容中有几个字节为错误,还可以成功解密出其他的内容。
[0048]为了解决上述问题,本发明还提供了一种本发明所述基于混沌变换的文件加密系 统和解密系统,分别参见图9和图10所示。
[0049]一种基于混沌变换的文件加密系统,包括以下模块:预处理加密模块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迭代生成的加密密钥保存至加密内容的 末尾。
[0050]其中,预处理加密模块M901用于预处理用于加密内容的密码。在所述预处理加密 模块M901内部,首先判断加密内容是否为文件;然后获取所述加密内容的信息指纹;再获 取第一迭代系数和第一迭代次数,并通过Logistic迭代式使得系统进入混沌状态。
[0051]第二迭代系数加密模块M903用于获取第二迭代系数。在所述第二迭代系数加密 模块M903内部,首先获取多个密钥数的平均数;然后提取所述平均数的小数部分;接着执 行Logistic迭代式规则计算。
[0052]第二迭代次数加密模块M904用于获取第二迭代次数。在所述第二迭代次数加密模块M904内部,首先获取所有密钥整数的平均数;然后提取所述平均数的小数部分;接着 根据所述小数部分和预设定的迭代次数进行Logistic迭代;再将迭代结果换算成整数。
[0053]迭代加密模块M905用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并 生成迭代结果。在迭代加密模块M905内部,首先,获取每一个密钥的字节,并转换为整数; 然后换算成0?I的小数(X0);接着根据生成的第二迭代系数和第二迭代次数,进行密钥迭 代;再将生成的迭代结果换算成整数。
[0054]验证码加密模块M907用于根据明文内容生成验证码。在所述验证码加密模块 M907内部,首先提取一组明文数据;然后提取明文数据变换成的小数部分,并生成第三 迭代系数;接着获取第三迭代次数;再根据所述第三迭代次数和所述第三迭代系数,执行 Logistic迭代;并将迭代结果换算成整数。
[0055]一种基于混沌变换的文件解密系统,包括以下模块:预处理解密模块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迭代的解密密钥,是否与保存的验 证码一致。
[0056]其中,预处理解密模块M1001用于预处理解密密钥和密文。在所述预处理解密模 块M1001内部,首先判断解密内容是否为文件;然后获取所述解密内容的信息指纹;再获取 第一迭代系数和第一迭代次数,并通过Logistic迭代式使得系统进入混沌状态。
[0057]第二迭代系数解密模块M1003用于获取第二迭代系数。在所述第二迭代系数解密 模块M1003内部,首先获取多个密钥数的平均数;然后提取所述平均数的小数部分;接着执 行Logistic迭代式规则计算。
[0058]第二迭代次数解密模块M1004用于获取第二迭代次数。在所述第二迭代次数加密 模块M1004内部,首先获取所有密钥整数的平均数;然后提取所述平均数的小数部分;接着 根据所述小数部分和预设定的迭代次数进行Logistic迭代;再将迭代结果换算成整数。
[0059]迭代解密模块M1005,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并 生成迭代结果。在迭代解密模块M1005内部,首先,获取每一个密钥的字节,并转换为整数; 然后换算成0?I的小数(X0);接着根据生成的第二迭代系数和第二迭代次数,进行密钥迭代;再将生成的迭代结果换算成整数。
[0060]验证码解密模块M1008用于根据明文内容生成验证码。在所述验证码解密模块 M1008内部,首先提取一组明文数据;然后提取明文数据变换成的小数部分,并生成第三 迭代系数;接着获取第三迭代次数;再根据所述第三迭代次数和所述第三迭代系数,执行 Logistic迭代;并将迭代结果换算成整数。
[0061]本发明所述基于混沌变换的文件加解密系统正是利用混沌特性和多随机特性,增 加了解密的难度,提高了加密数据的安全性,实现了密钥的随机生成和加密算法的随机调 用,使得加密后的文件更加安全,适用于手机等系统的文件保密。
[0062]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人 员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为 本发明的保护范围。
【权利要求】
1.一种基于混沌变换的文件加密方法,其特征在于,包括以下步骤:(al)对用于加密内容的密码进行预处理;(a2)提取一组明文数据,生成一组验证码的初始值;(a3)获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;(a4)根据所述第二迭代系数和所述第二迭代次数以执行密钥迭代,生成迭代结果; (a5)对所述迭代结果和明文数据进行异或操作;(a6)根据明文数据生成验证码;(a7)将异或操作的结果写入文件中,并生成密文;(a8)判断密钥迭代是否执行至所述加密内容的尾部,若是,则执行步骤(a9);否则,继续执行步骤(a4);(a9)将所述明文数据依次Logistic迭代的迭代结果和所有所述迭代结果转换成的整数,以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
2.根据权利要求1所述的基于混沌变换的文件加密方法,其特征在于,在步骤(al)中, 进一步包括以下子步骤:(a 11)判断加密内容是否为文件,若是,则对加密内容加上字符“ F ” ;否则,则对加密内容加上字符“W” ;(al2)获取所述加密内容的信息指纹;(al3)判断密钥的长度是否大于所述加密内容的长度,若是,则执行步骤(al4);否则, 执行步骤(al5);(al4)减少密钥长度变换;`(al5)获取第一迭代系数和第一迭代次数;(al6)根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统快速进入混沌状态。
3.根据权利要求1所述的基于混沌变换的文件加密方法,其特征在于,在步骤(a3)中, 进一步包括以下子步骤:(a31)获取多个密钥数的平均数;(a32)提取所述平均数的小数部分;(a33)执行规则计算,以保证所述第二迭代系数满足混沌变换的条件;(a34)获取所有密钥整数的平均数;(a35)提取所述平均数的小数部分;(a36)根据所述小数部分和预设定的迭代次数进行Logistic迭代;(a37)将迭代结果换算成整数。
4.根据权利要求1所述的基于混沌变换的文件加密方法,其特征在于,在步骤(a6)中, 进一步包括以下子步骤:(a61)提取一组明文数据;(a62)提取明文数据变换成的小数部分,并生成第三迭代系数;(a63)获取第三迭代次数;(a64)根据所述第三迭代次数和所述第三迭代系数,执行Logistic迭代;(a65)将迭代结果换算成整数。
5.一种基于混沌变换的文件解密方法,其特征在于,包括以下步骤:(bl)对解密密钥和密文进行预处理;(b2)提取一组明文数据,生成一组验证码的初始值;(b3)获取第二迭代系数和第二迭代次数,用于为密钥迭代提供参数;(b4)根据所述第二迭代系数和所述第二迭代次数以执行Logistic迭代,生成迭代结果;(b5)对所述迭代结果和密文进行异或操作;(b6)将异或操作的结果写入文件中,并生成明文;(b7)根据异或操作的结果生成验证码;(b8)判断Logistic迭代是否执行至所述解密内容的尾部,若是,则执行步骤(b9);否贝U,继续执行步骤(b4);(b9)判断解密迭代的迭代结果取整和最后一组下一次Logistic迭代的解密密钥,是否与保存的验证码一致,若一致,则解密成功;否则,则解密失败。
6.根据权利要求 5所述的基于混沌变换的文件解密方法,其特征在于,在步骤(bl)中, 进一步包括以下子步骤:(bll)判断解密内容是否为文件,若是,则对解密内容加上字符“F”;否则,则对解密内容加上字符“W” ;(bl2)获取所述解密内容的信息指纹;(bl3)判断解密内容的长度是否小于所述密钥的长度的2倍;若是,则执行步骤(bl4); 否则,执行步骤(bl7);(bl4)减少密钥长度变换;(bl5)提取解密数据,生成解密密文和验证码;(bl6)提取部分的解密数据作为验证码,设置另一部分的解密数据作为解密密文; (bl7)获取第一迭代系数和第一迭代次数;(bl8)根据所述第一迭代系数和所述第一迭代次数以执行密钥迭代,用于使系统进入混沌状态。
7.一种基于混沌变换的文件加密系统,其特征在于,包括以下模块:预处理加密模块、 验证码初始值加密模块、第二迭代系数加密模块、第二迭代次数加密模块、迭代加密模块、 异或加密模块、验证码加密模块、密文加密模块、第一判断加密模块和保存加密模块;所述预处理加密模块用于预处理用于加密内容的密码;所述验证码初始值加密模块与所述的预处理加密模块连接,用于生成验证码初始值; 所述第二迭代系数加密模块与所述的验证码初始值加密模块连接,用于获取第二迭代系数;所述第二迭代次数加密模块与所述的第二迭代系数加密模块连接,用于获取第二迭代次数;所述迭代加密模块与所述第二迭代次数加密模块连接,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果;所述异或加密模块与所述迭代加密模块连接,用于对所述迭代结果和明文数据进行异或操作;所述验证码加密模块与所述异或加密模块连接,用于根据明文数据生成验证码;所述密文加密模块与所述验证码加密模块连接,用于将异或操作的结果写入文件,并生成密文;所述第一判断加密模块与所述密文加密模块连接,用于判断密钥迭代是否执行至所述加密内容的尾部;所述保存加密模块与所述第一判断加密模块连接,用于将明文数据依次Logistic迭代的结果和所有所述迭代结果转换成的整数,以及最后一组下一次Logistic迭代生成的加密密钥保存至加密内容的末尾。
8.一种基于混沌变换的文件解密系统,其特征在于,包括以下模块:预处理解密模块、 验证码初始值解密模块、第二迭代系数解密模块、第二迭代次数解密模块、迭代解密模块、 异或解密模块、明文解密模块、验证码解密模块、第一判断解密模块和第二判断解密模块; 所述预处理解密模块用于预处理解密密钥和密文;所述验证码初始值解密模块与所述的预处理解密模块连接,用于生成验证码初始值;所述第二迭代系数解密模块与所述的验证码初始值解密模块连接,用于获取第二迭代系数;所述第二迭代次数解密模块与所述的第二迭代系数解密模块连接,用于获取第二迭代次数;所述迭代解密模块与所述第二迭代次数解密模块连接,用于根据第二迭代系数和第二迭代次数以执行密钥迭代,并生成迭代结果;所述异或解密模块与所述迭代解密模块连接,用于对所述迭代结果和密文进行异或操作;所述明文解密模块与所述异或解密模块连接,用于将根据异或操作的结果写入文件中,并生成明文;所述验证码解密模块与所述明文解密模块连接,用于根据所述异或操作的结果生成验证码;所述第一判断解密模块与所述验证码解密模块连接,用于判断Logistic迭代是否执行至所述解密内容的尾部;所述第二判断解密模块与所述第一判断解密模块连接,用于判断解密迭代的结果取整和最后一组下一次Logistic迭代的解密密钥,是否与保存的验证码一致。
【文档编号】H04L9/00GK103595523SQ201210289454
【公开日】2014年2月19日 申请日期:2012年8月15日 优先权日:2012年8月15日
【发明者】赵昆 申请人:希姆通信息技术(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1