1.一种字符串的加密方法,其特征在于,包括如下几个步骤:(1)字符串的置乱:
首先利用外部加密密钥(α、β),令初值x1=α和参数μ=β,对如下公式(1)所示的倾斜帐篷混沌系统进行迭代,k表示迭代次数,xk+1表示第k次迭代得到的混沌信号,其中k=1,
2,...,从而得到混沌序列X,然后按照如下所示公式(2)分别计算得到混沌系统的初始迭代步数(m1)和抽取间隔(n1),从混沌序列X中第m1个元素开始每隔n1个元素取1个,从而形成长度为L的混沌序列Y,最后将混沌序列Y按升序排序,根据序列Y排序前、后的位置变化置乱规则,对某段待加密字符串进行置乱,得到置乱后的字符序列 其中字符串长度记为L;
(2)转码:将置乱后的字符序列逐个字符转换为数值型数据,得到高位数值序列和低位数值序列 其中数值序列的长度与该字符序列的长度一致;
(3)低位数值序列的双向扩散加密:首先,进行低位数值序列的正向扩散加密利用外部加密密钥(α、β),按照如下所示公式(3)计算得到混沌系统的初始迭代步数m2,从混沌序列X中抽取第m2个元素,作为倾斜帐篷混沌系统的初值 同时得到倾斜帐
1 1
篷混沌系统的参数(μ),即μ=β,对低位数值序列 中每个元素 其中i=1,2,3,...,L,依次进行如下操作:
1
①由初值 和参数μ,对如公式(1)所示倾斜帐篷混沌系统进行单次迭代,得到混沌信号 同时对混沌信号 按照如下公式(4)进行整数化处理,得到混沌信号Y1i,②利用混沌信号Y1i对数据 按照如下公式(5)进行正向扩散加密,得到正向扩散加密密文C1i,
其中,Y10和C10为正向扩散加密密钥,1
③根据正向扩散加密密文C1i,以及C1i‑1和Y1i‑1,对倾斜帐篷混沌系统的参数μ按照如下公式(6)进行调整,
从而得到正向扩散加密后的低位数值序列C1={C11,C12,...,C1i,...,C1L};
然后,进行低位数值序列的逆向扩散加密利用外部加密密钥(α、β),按照如下所示公式(7)计算得到混沌系统的初始迭代步数m3,从混沌序列X中抽取第m3个元素,作为倾斜帐篷混沌系统的初值 同时得到倾斜帐
2 2
篷混沌系统的参数(μ),即μ=β,对正向扩散加密后的低位数值序列C1={C11,C12,...,C1i,...,C1L}中每个元素C1i,其中i=1,2,3,...,L,依次进行如下操作:2
①由初值 和参数μ,对如公式(1)所示倾斜帐篷混沌系统进行单次迭代,得到混沌信号 同时对混沌信号 按照如下公式(8)进行整数化处理,得到混沌信号Y2i,②利用混沌信号Y2i对数据C1i按照如下公式(9)进行逆向扩散加密,得到双向扩散加密密文C2i,
其中,Y20和C20为逆向扩散加密密钥,2
③根据双向扩散加密密文C2i,以及C2i‑1和Y2i‑1,对倾斜帐篷混沌系统的参数μ按照如下公式(10)进行调整,
从而得到双向扩散加密后的低位数值序列C2={C21,C22,...,C2i,...,C2L};
(4)转码:将高位数值序列 和双向扩散加密后的低位数值序列C2,进行数值与字符的转换,得到字符序列C,即为该段字符串的加密密文,其中序列C的长度为 且
2.根据权利要求1所述的一种字符串的加密方法,其特征在于:步骤(2)中所述的将置乱后的字符序列逐个字符转换为数值型数据,其中字符序列包括,除空格以外的可显示ASCII码字符,以及GB2312字符集中双字节编码的6763个汉字;其中逐个字符转换为数值型数据,是指采用unicode2native(·)函数,将单个汉字转换为区位码数值数据,表示为[区数值数据,位数值数据],或将可显示ASCII码字符转换为ASCII码数值数据,表示为[0,ASCII码数值数据],都可以用数据 表示,相应的数据组合得到高位数值序列和低位数值序列
3.根据权利要求1所述的一种字符串的加密方法,其特征在于:步骤(4)中所述的将高位数值序列 和双向扩散加密后的低位数值序列C2,进行数值与字符的转换,其转换关系表述如下:
设定一个空字符串C,将高位数值序列 和双向扩散加密后的低位数值序列C2={C21,C22,...,C2i,...,C2L}中各对应元素依次进行如下运算,如果
首先进行判断,如果 且(C2i+161)≥250,那么在字符序列C中添加1个空格,即C=[C,''],并设
然后利用native2unicode(·)函数将数值数据 转换为单个汉字,并添加到字符序列C中,即
如果
直接利用char(·)函数将数值数据(C2i+33)转换为单个ASCII码字符,并添加到字符序列C中,即C=[C,char(C2i+33)]。
4.一种字符串的解密方法,其特征在于,包括如下几个步骤:(1)转码:将某段待解密字符串密文C逐个字符转换成数值型数据,得到高位数值序列R1={R11,R21,...,Ri1,....,RL1}和低位数值序列R2={R12,R22,...,Ri2,....,RL2},其中数值序列R1、R2的长度为 某段待解密字符串密文 的长度为(2)低位数值序列的双向扩散解密:首先,进行低位数值序列的逆向扩散解密利用外部解密密钥 令初值 和参数 对公式(11)所示的倾斜帐篷混沌系统进行迭代,k表示迭代次数, 表示第k次迭代得到的混沌信号,其中k=1,
2,...,从而得到混沌序列按照如下所示公式(12)计算得到混沌系统的初始迭代步数 从混沌序列 中抽取第个混沌信号,作为倾斜帐篷混沌系统的初值 同时得到倾斜帐篷混沌系统的参数即
对低位数值序列 中每个元素Ri2,其中i=1,2,3,..., 依次进行如下操作:
①由初值 和参数 对如公式(11)所示倾斜帐篷混沌系统进行单次迭代,得到混沌信号 同时对混沌信号 按照如下公式(13)进行整数化处理,得到混沌信号②利用混沌信号 对数据Ri2按照如下公式(14)进行逆向扩散解密,得到逆向扩散解密数据
其中, 和R0′2为逆向扩散解密密钥,③根据低位数值序列中元素Ri2、Ri‑12对应的数值Ri′2、Ri′‑12,以及 对倾斜帐篷混沌系统的参数 按照如下公式(15)进行调整,从而得到逆向扩散解密后的低位数值序列D1={D11,D12,...,D1i,...,D1L};
然后,进行低位数值序列的正向扩散解密利用外部解密密钥 按照如下所示公式(16)计算得到混沌系统的初始迭代步数
从混沌序列 中抽取第 个元素,作为倾斜帐篷混沌系统的初值 同时得到倾斜帐篷混沌系统的参数 即
对逆向扩散解密后的低位数值序列 中每个元素D1i,其中i=1,2,3,..., 依次进行如下操作:①由初值 和参数 对如公式(11)所示倾斜帐篷混沌系统进行单次迭代,得到混沌信号 同时对混沌信号 按照如下公式(17)进行整数化处理,得到混沌信号②利用混沌信号 对数据D1i按照如下公式(18)进行正向扩散解密,得到双向扩散解密数据D2i,
其中, 和D10为正向扩散解密密钥,③根据正向扩散解密数据D1i,以及D1i‑1和 对倾斜帐篷混沌系统的参数 按照如下公式(19)进行调整,
从而得到双向扩散解密后的低位数值序列(3)转码:将高位数值序列R1和双向扩散解密后的低位数值序列D2,进行数值与字符的转换,得到字符序列PP,其中字符序列PP的长度为(4)字符串的反置乱:
首先利用外部解密密钥 按照如下所示公式(20)分别计算得到混沌系统的初始迭代步数 和抽取间隔
然后从混沌序列 中第 个元素开始每隔 个元素取1个,从而形成长度为 的混沌序列
最后将混沌序列 按升序排序,根据序列Y排序前、后的位置变化置乱规则,对字符串PP中每个字符进行反置乱,得到反置乱后的字符序列 即为该段待解密字符串解密后恢复的字符串。
5.根据权利要求4所述的一种字符串的解密方法,其特征在于:步骤(1)中所述的将某段待解密字符串密文 逐个字符转换成数值型数据,得到高位数值序列和低位数值序列 其转换关系表述如下:
首先将某段待解密字符串密文 中逐个字符转换为数值数据,即采用unicode2native(·)函数,将单个汉字转换为区位码数值数据,表示为[区数值数据,位数值数据],或将可显示ASCII码字符转换为ASCII码数值数据,表示为[0,ASCII码数值数据],都可用数据[Ri1,Ri2]表示;
然后将各个数值型数据[Ri1,Ri2]对应组合 得到高位数值序列和低位数值序列
接着检查低位数值序列R2中是否有Ri2=32的元素,如果是,则将对应高位数值序列R1中后一元素Ri+11数值加1,并删除该数值为32的元素Ri2和其对应高位数值序列R1中的元素Ri1;
最后得到高位数值序列 和低位数值序列
6.根据权利要求4所述的一种字符串的解密方法,其特征在于:步骤(3)中所述的将高位数值序列R1和双向扩散解密后的低位数值序列D2,进行数值与字符的转换,其转换关系表述如下:
设定一个空字符序列PP,将高位数值序列 和双向扩散解密后的低位数值序列 中对应元素依次进行如下运算,如果Ri1>128,则
如果Ri1=215且D2i≥250,那么在字符序列PP中添加1个空格,即PP=[PP,''];否则利用native2unicode(·)函数将数值数据[Ri1,D2i]转换为单个汉字,并添加到字符序列PP中,即PP=[PP,native2unicode([Ri1,D2i])];
如果Ri1<128,则
直接利用char(·)函数将数值数据(D2i)转换为单个ASCII码字符,并添加到字符序列PP中,即PP=[PP,char(D2i)]。