1.一种字符串的加密方法,其特征在于,包括如下几个步骤:(1)转码:将某段字符串逐个字符转换为数值型数据,得到高位数值序列P1={P11,P21,...,Pi1,....,PL1}和低位数值序列P2={P12,P22,...,Pi2,....,PL2},其中数值序列P1、P2的长度与该段字符串的长度一致,记为L;
(2)产生混沌序列:
首先利用外部加密密钥(α、β),按照如下所示公式分别计算得到混沌系统的初值x1、参数μ、初始迭代步数m和抽取间隔n1、n2,令
则
x1=mod(kp1+α,0.99999)+0.00001,μ=β+mod(kp1,4-β),
其中,α∈(0,1),β∈[3.75,4),从而保证x1∈(0,1),μ∈[3.75,4),m∈[419,479]的整数,n1∈[1,23]的整数,n2∈[1,29]的整数,可见混沌系统的初值x1、参数μ、初始迭代步数m和抽取间n1、n2不仅与外部密钥α、β有关,而且会随着该段待加密的字符串变化;
然后由初值x1和参数μ,对如下公式所示的Logistic混沌系统进行迭代,k表示迭代次数(k=1,2,...),xk+1表示第k次迭代得到的混沌信号,xk+1=μ×xk×(1-xk)
得到混沌序列X,从第m个元素开始每隔n1个元素取1个,从而形成长度为L的混沌序列Y,并从第m个元素开始每隔n2个元素取1个,从而形成长度为L的混沌序列Z;
(3)高位、低位数值序列置乱:
将混沌序列Y按升序排序,根据序列Y排序前、后的位置变化置乱规则,对高位数值序列P1={P11,P21,...,Pi1,....,PL1}进行置乱,得到置乱后的高位数值序列同时将混沌序列Z按升序排序,根据序列Z排序前、后的位置变化置乱规则,对低位数值序列P2={P12,P22,...,Pi2,....,PL2}进行置乱,得到置乱后的低位数值序列(4)转码:将置乱后的高位数值序列 和置乱后的低位数值序列 进行数值与字符的转换,得到字符串密文C,即为该段字符串的加密密文,其中字符串密文C的长度为 且
2.根据权利要求1所述的一种字符串的加密方法,其特征在于:步骤(1)中所述的将某段字符串逐个字符转换为数值型数据,其中某段字符串包括,除空格以外的可显示ASCII码字符,以及GB2312字符集中双字节编码的6763个汉字;逐个字符转换为数值型数据,是指采用unicode2native(·)函数,将单个汉字转换为区位码数值数据,表示为[区数值数据,位数值数据],或将可显示ASCII码字符转换为ASCII码数值数据,表示为[0,ASCII码数值数据],都可以用数据[Pi1,Pi2]表示,相应的数据组合得到高位数值序列P1={P11,P21,...,Pi1,....,PL1}和低位数值序列P2={P12,P22,...,Pi2,....,PL2}。
3.根据权利要求1所述的一种字符串的加密方法,其特征在于:步骤(4)中所述的将置乱后的高位数值序列 和置乱后的低位数值序列 进行数值与字符的转换,其转换关系表述如下:设定一个空字符序列C,将置乱后的高位数值序列 和置乱后的低位数值序列 中各对应元素依次进行如下运算,
如果 则
首先判断,如果 那么将对应低位数值数据加128,即然后判断,如果 且 那么在字符序列C中添加1个空格,即C=[C,”],并设
接着利用native2unicode(·)函数将数值数据 转换为单个汉字,并添加到字符序列C中,即如果 则
首先判断,如果 那么将对应低位数值数据减128,即然后利用char(·)函数将数值数据 转换为单个ASCII码字符,并添加到字符序列C中,即
4.一种字符串的解密方法,其特征在于,包括如下几个步骤:(1)转码:将某段待解密字符串密文 逐个字符转换成数值型数据,得到高位数值序列和低位数值序列 其中数值序列R1、R2的长度为 某段待解密字符串密文的长度为(2)产生混沌序列:
首先利用外部解密密钥 按照如下所示公式分别计算得到混沌系统的初值参数 初始迭代步数 和抽取间隔
令 则
其中, 从而保证 的整
数, 的整数, 的整数,可见混沌系统的初值 参数 初始迭代步数和抽取间隔 不仅与外部密钥 有关,而且会随着待解密字符串密文变化;
然后由初值 和参数 对如下公式所示的Logistic混沌系统进行迭代,k表示迭代次数(k=1,2,...), 表示第k次迭代得到的混沌信号,得到混沌序列 从第 个元素开始每隔 个元素取1个,从而形成长度为 的混沌序列 并从第 个元素开始每隔 个元素取1个,从而形成长度为 的混沌序列(3)高位、低位数值序列反置乱:
将混沌序列 按升序排序,根据序列 排序前、后的位置变化置乱规则,对高位数值序列进行反置乱,得到反置乱后的高位数值序列同时将混沌序列 按升序排序,根据序列 排序前、后的位置变化置乱规则,对低位数值序列进行反置乱,得到反置乱后的低位数值序列(4)转码:将反置乱后的高位数值序列 和反置乱后的低位数值序列 进行数值与字符的转换,得到字符序列PP,即为该段密文解密后恢复的字符串,其中字符序列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所述的一种字符串的解密方法,其特征在于:步骤(4)中所述的将反置乱后的高位数值序列 和反置乱后的低位数值序列 进行数值与字符的转换,其转换关系表述如下:设定一个空字符序列PP,将反置乱后的高位数值序列 和反置乱后的低位数值序列 中对应元素依次进行如下运算,如果 则
首先判断,如果 那么将对应低位数值数据加128,即然后判断,如果 且 那么在字符序列PP中添加1个空格,即PP=[PP,”];否则利用native2unicode(·)函数将数值数据 转换为单个汉字,并添加到字符序列PP中,即如果 则
首先判断,如果 那么将对应低位数值数据减128,即然后利用char(·)函数将数值数据 转换为单个ASCII码字符,并添加到字符序列PP中,即