CN114707165A - 一种基于分层置乱的字符串加密方法 - Google Patents

一种基于分层置乱的字符串加密方法 Download PDF

Info

Publication number
CN114707165A
CN114707165A CN202210358275.7A CN202210358275A CN114707165A CN 114707165 A CN114707165 A CN 114707165A CN 202210358275 A CN202210358275 A CN 202210358275A CN 114707165 A CN114707165 A CN 114707165A
Authority
CN
China
Prior art keywords
sequence
binary
scrambling
hierarchical
rule
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.)
Withdrawn
Application number
CN202210358275.7A
Other languages
English (en)
Inventor
刘焰森
盛苏英
陆国平
张小美
吴新华
张嘉豪
范云雷
杜宇笙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nantong University
Original Assignee
Nantong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nantong University filed Critical Nantong University
Priority to CN202210358275.7A priority Critical patent/CN114707165A/zh
Publication of CN114707165A publication Critical patent/CN114707165A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/08Computing arrangements based on specific mathematical models using chaos models or non-linear system models

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Nonlinear Science (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于分层置乱的字符串加密方法,步骤如下:将某段待加密字符串进行数值型数据以及10bits二进制转换,得到二进制矩阵B1和B2;分别对二进制矩阵B1和B2按行进行分层,并利用混沌信号的置乱规则分别对二进制分层序列进行置乱,再按置乱拼接规则将置乱后的二进制分层序列进行不同的拼接操作,且实时更新置乱拼接规则参数,然后进行数值型数据转换,得到数值序列D;最后进行数值与字符的转换,从而得到字符序列C,即为该段待加密字符串的加密密文。本发明的一种基于分层置乱的字符串加密方法简单可行,可抵抗已知/选择明文攻击,具有很强的安全性。

Description

一种基于分层置乱的字符串加密方法
技术领域
本发明涉及信息加密技术领域,特别涉及一种基于分层置乱的字符串加密方法。
背景技术
随着社会的发展,信息资源逐渐成为人们生活的重要组成部分,信息安全也随之成为人们研究的热门课题,同时随着网络通讯技术的发展,对于数据特别是字符串通讯的安全性、便捷性需求逐渐增加。在现有技术中,主要对数据进行简单取反、位置交换、异或,以及DES或RAS混合加密,加密性能有待提高。现有的中文字符加密算法,所得的大多数密文可读性及可复制性太差,出现太多不易书写或者辨认的密文字符,也没有综合中文、英文字符的特点,提出一套简单方便、安全可靠的加密算法。同时由于混沌系统和密码学之间存在着一些自然联系,混沌系统作为一种天然的密码系统,被引入到密码学领域。在此情况下,结合混沌信号的密码特性,提出一套具有良好抗攻击性能的基于分层置乱的字符串加密方法,显得尤为重要。
发明内容
发明目的:本发明的目的是为了解决现有技术中的不足,提供一种基于分层置乱的字符串加密方法,将某段待加密字符串进行数值型数据、10bits二进制转换,以及二进制矩阵的按行分层,并利用混沌信号的置乱规则分别对二进制分层序列进行置乱,按实时更新的置乱拼接规则将置乱后的二进制分层序列进行不同的拼接操作,随后进行数值型数据、以及数值与字符的转换,从而得到该段待加密字符串的加密密文。本发明的一种基于分层置乱的字符串加密方法简单可行,可抵抗已知/选择明文攻击,具有很强的安全性。
技术方案:一种基于分层置乱的字符串加密方法,包括如下几个步骤:
(1)转码
首先,将某段待加密字符串A逐字转换为数值型数据[Pi1,Pi2],得到高位数值序列P1={P11,P12,...,P1i,....,P1L}={P11,P21,...,Pi1,....,PL1}和低位数值序列P2={P21,P22,...,P2i,....,P2L}={P12,P22,...,Pi2,....,PL2},
然后,利用函数dec2bin(·,10),将高位数值序列P1中元素P1i逐个转换成10bits的二进制序列{PB1i1,PB1i2,PB1i3,PB1i4,PB1i5,PB1i6,PB1i7,PB1i8,PB1i9,PB1i10},并按列填入矩阵,得到二进制矩阵B1,
Figure BDA0003582783010000021
最后,利用函数dec2bin(·,10),将低位数值序列P2中元素P2i逐个转换成12bits的二进制序列{PB2i1,PB2i2,PB2i3,PB2i4,PB2i5,PB2i6,PB2i7,PB2i8,PB2i9,PB2i10},并按列填入矩阵,得到二进制矩阵B2,
Figure BDA0003582783010000022
其中,某段待加密字符串A包括GB2312字符集中的中文标点符号、GB2312字符集中双字节编码的汉字和ASCLL码值∈[32,126]的可见字符,某段待加密字符串A的长度表示为L,数值序列P1和P2的长度均为L,二进制矩阵B1和B2的大小为10×L;
(2)分层置乱
首先,对二进制矩阵B1按行进行分层,得到相应10个二进制分层序列,表示为
Figure BDA0003582783010000023
同样对二进制矩阵B2按行进行分层,得到相应10个二进制分层序列,表示为
Figure BDA0003582783010000024
其中j=1,2,...,9,10,
接着,利用外部加密密钥α和β,按照如下公式(1)分别计算得到混沌系统的初值x1,参数μ,初始迭代步数m1、m2,以及抽取间隔n1、n2
Figure BDA0003582783010000025
Figure BDA0003582783010000031
其中,
Figure BDA0003582783010000032
分别表示二进制分层序列
Figure BDA0003582783010000033
中含二进制‘1’的个数,函数
Figure BDA0003582783010000034
表示为不大于ε的最大整数,外部密钥满足α∈(0,1),β∈(3.57,4),
由混沌系统的初值x1和参数μ,对如下公式(2)所示Logistic混沌映射进行迭代,式中k表示迭代次数、xk+1表示第k次迭代得到的混沌信号,k=1,2,...,max(m1+10n1,m2+10n2),
xk+1=μ×xk×(1-xk) (2)
得到混沌序列X,从第m1个元素开始每隔n1个元素取1个,从而形成长度为10的混沌序列Y,并从第m2个元素开始每隔n2个元素取1个,从而形成长度为10的混沌序列Z,
将混沌序列Y按降序排序,将序列Y排序前、后的位置变化置乱规则记为T1={T11,T12,...,T19,T110},同时将混沌序列Z按降序排序,将序列Z排序前、后的位置变化置乱规则记为T2={T21,T22,...,T29,T210},
利用位置变化置乱规则T1对二进制分层序列
Figure BDA0003582783010000035
进行置乱,得到置乱后的二进制分层序列
Figure BDA0003582783010000036
同样利用位置变化置乱规则T2对二进制分层序列
Figure BDA0003582783010000037
进行置乱,得到置乱后的二进制分层序列
Figure BDA0003582783010000038
其中j=1,2,...,9,10;
然后,将置乱后的二进制分层序列
Figure BDA0003582783010000039
Figure BDA00035827830100000310
依次进行如下置乱拼接操作:
S0:令j=1,置乱拼接规则参数
Figure BDA00035827830100000311
S1:判断置乱拼接规则参数rule_Perm的数值,
如果rule_Perm=0,则将置乱后的二进制分层序列
Figure BDA00035827830100000312
和置乱后的二进制分层序列
Figure BDA00035827830100000313
顺序拼接,即
Figure BDA00035827830100000314
如果rule_Perm=1,则将置乱后的二进制分层序列
Figure BDA0003582783010000041
先前后翻转,再和置乱后的二进制分层序列
Figure BDA0003582783010000042
顺序拼接,即
Figure BDA0003582783010000043
如果rule_Perm=2,则将置乱后的二进制分层序列
Figure BDA0003582783010000044
和前后翻转的置乱后二进制分层序列
Figure BDA0003582783010000045
顺序拼接,即
Figure BDA0003582783010000046
如果rule_Perm=3,则将置乱后的二进制分层序列
Figure BDA0003582783010000047
和置乱后的二进制分层序列
Figure BDA0003582783010000048
顺序拼接,并将拼接后序列前后翻转,即
Figure BDA0003582783010000049
如果rule_Perm=4,则将置乱后的二进制分层序列
Figure BDA00035827830100000410
和置乱后的二进制分层序列
Figure BDA00035827830100000411
顺序拼接,即
Figure BDA00035827830100000412
如果rule_Perm=5,则将置乱后的二进制分层序列
Figure BDA00035827830100000413
先前后翻转,再和置乱后的二进制分层序列
Figure BDA00035827830100000414
顺序拼接,即
Figure BDA00035827830100000415
如果rule_Perm=6,则将置乱后的二进制分层序列
Figure BDA00035827830100000416
和前后翻转的置乱后二进制分层序列
Figure BDA00035827830100000417
顺序拼接,即
Figure BDA00035827830100000418
否则,则将置乱后的二进制分层序列
Figure BDA00035827830100000419
和置乱后的二进制分层序列
Figure BDA00035827830100000420
顺序拼接,并将拼接后序列前后翻转,即
Figure BDA00035827830100000421
从而得到置乱拼接后的二进制分层序列
Figure BDA00035827830100000422
S2:首先将置乱拼接后的二进制分层序列
Figure BDA00035827830100000423
中元素从头到尾依次正向以10个元素为单位进行分组,得到
Figure BDA00035827830100000424
个分组序列并利用bin2dec()函数依次将各分组序列转换为数值型数据,将转换后的数值型数据之和记为DFj,其中函数
Figure BDA00035827830100000425
表示为不小于2L/10的最小整数,
然后更新置乱拼接规则参数rule_Perm=mod(DFj,8),且令j=j+1,接着判断j的大小,如果j≤10,则转入步骤S1,否则转入步骤S3,
S3:结束二进制分层序列的置乱拼接操作,从而得到置乱拼接后的二进制分层序列,表示为
Figure BDA00035827830100000426
并将其按行依次填入二进制矩阵CC中,表示如下,
Figure BDA0003582783010000051
最后,按列依次将二进制矩阵CC的列序列CC(:,m)转换成数值型数据D1m和D2m,其中m=1,2,3,...,2L,从而得到数值序列D={D1,D2,...,D4L-1,D4L}={D11,D21,D12,D22,...,D12L,D22L};
(3)转码
利用函数char(·),将数值序列D={D1,D2,...,D4L-1,D4L}中元素依次进行数值与字符的转换,得到字符序列C,即为该段待加密字符串的加密密文,其中字符序列C的长度为4L。
进一步地,一种基于分层置乱的字符串加密方法里步骤(1)中所述的将某段待加密字符串A逐字转换为数值型数据[Pi1,Pi2],是指将某段待加密字符串A中逐个字符采用unicode2native(·)函数转换为数值型数据,即[Pi1,Pi2]=unicode2native(Ai),将单个汉字转换为区位码数值数据,表示为[区数值数据,位数值数据],或将ASCII码值属于[32,126]的可见字符转换为ASCII码数值数据,表示为[0,ASCII码数值数据],从而得到高位数值序列P1={P11,P12,...,P1i,....,P1L}={P11,P21,...,Pi1,....,PL1}和低位数值序列P2={P21,P22,...,P2i,....,P2L}={P12,P22,...,Pi2,....,PL2}。
进一步地,一种基于分层置乱的字符串加密方法里步骤(2)中所述的按列依次将二进制矩阵CC的列序列CC(:,m)转换成数值型数据D1m和D2m,是指取列序列CC(:,m)的前5位且在其首端加上二进制‘1’、尾端加上二进制‘0’,并采用bin2dec()函数转换成数值型数据,得到数值型数据D1m,即D1m=bin2dec(['1',(CC(1:5,m))T,'0']);同时取列序列CC(:,m)的后5位且在其首端加上二进制‘1’、尾端加上二进制‘0’,并采用bin2dec()函数转换成数值型数据,得到数值型数据D2m,即D2m=bin2dec(['1',(CC(6:10,m))T,'0'])。
有益效果:本发明利用混沌信号的置乱规则,对某段待加密字符串进行数值型数据、10bits二进制转换,以及二进制矩阵按行分层所得的二进制分层序列进行置乱,按实时更新的置乱拼接规则进行不同的拼接操作,从而得到该段待加密字符串的加密密文。本发明的一种基于分层置乱的字符串加密方法简单可行,可抵抗已知/选择明文攻击,具有很强的安全性。
附图说明
图1为本发明的一种基于分层置乱的字符串加密流程示意图;
具体实施方式
如图1所示的一种基于分层置乱的字符串加密方法,包括如下几个步骤:
(1)转码
首先,将某段待加密字符串A中逐个字符采用unicode2native(·)函数转换为数值型数据,即[Pi1,Pi2]=unicode2native(Ai),将单个汉字转换为区位码数值数据,表示为[区数值数据,位数值数据],或将ASCII码值属于[32,126]的可见字符转换为ASCII码数值数据,表示为[0,ASCII码数值数据],从而得到高位数值序列P1={P11,P12,...,P1i,....,P1L}={P11,P21,...,Pi1,....,PL1}和低位数值序列P2={P21,P22,...,P2i,....,P2L}={P12,P22,...,Pi2,....,PL2},
然后,利用函数dec2bin(·,10),将高位数值序列P1中元素P1i逐个转换成10bits的二进制序列{PB1i1,PB1i2,PB1i3,PB1i4,PB1i5,PB1i6,PB1i7,PB1i8,PB1i9,PB1i10},并按列填入矩阵,得到二进制矩阵B1,
Figure BDA0003582783010000061
最后,利用函数dec2bin(·,10),将低位数值序列P2中元素P2i逐个转换成12bits的二进制序列{PB2i1,PB2i2,PB2i3,PB2i4,PB2i5,PB2i6,PB2i7,PB2i8,PB2i9,PB2i10},并按列填入矩阵,得到二进制矩阵B2,
Figure BDA0003582783010000071
其中,某段待加密字符串A包括GB2312字符集中的中文标点符号、GB2312字符集中双字节编码的汉字和ASCLL码值∈[32,126]的可见字符,某段待加密字符串A的长度表示为L,数值序列P1和P2的长度均为L,二进制矩阵B1和B2的大小为10×L;
(2)分层置乱
首先,对二进制矩阵B1按行进行分层,得到相应10个二进制分层序列,表示为
Figure BDA0003582783010000072
同样对二进制矩阵B2按行进行分层,得到相应10个二进制分层序列,表示为
Figure BDA0003582783010000073
其中j=1,2,...,9,10,
接着,利用外部加密密钥α和β,按照如下所示的公式分别计算得到混沌系统的初值x1,参数μ,初始迭代步数m1、m2,以及抽取间隔n1、n2
Figure BDA0003582783010000074
Figure BDA0003582783010000075
其中,
Figure BDA0003582783010000076
分别表示二进制分层序列
Figure BDA0003582783010000077
中含二进制‘1’的个数,函数
Figure BDA0003582783010000078
表示为不大于ε的最大整数,外部密钥满足α∈(0,1),β∈(3.57,4),
由混沌系统的初值x1和参数μ,对如下公式所示的Logistic混沌映射进行迭代,式中k表示迭代次数、xk+1表示第k次迭代得到的混沌信号,k=1,2,...,max(m1+10n1,m2+10n2),
xk+1=μ×xk×(1-xk)
得到混沌序列X,从第m1个元素开始每隔n1个元素取1个,从而形成长度为10的混沌序列Y,并从第m2个元素开始每隔n2个元素取1个,从而形成长度为10的混沌序列Z,
将混沌序列Y按降序排序,将序列Y排序前、后的位置变化置乱规则记为T1={T11,T12,...,T19,T110},同时将混沌序列Z按降序排序,将序列Z排序前、后的位置变化置乱规则记为T2={T21,T22,...,T29,T210},
利用位置变化置乱规则T1对二进制分层序列
Figure BDA0003582783010000081
进行置乱,得到置乱后的二进制分层序列
Figure BDA0003582783010000082
同样利用位置变化置乱规则T2对二进制分层序列
Figure BDA0003582783010000083
进行置乱,得到置乱后的二进制分层序列
Figure BDA0003582783010000084
其中j=1,2,...,9,10;
然后,将置乱后的二进制分层序列
Figure BDA0003582783010000085
Figure BDA0003582783010000086
依次进行如下置乱拼接操作:
S0:令j=1,置乱拼接规则参数
Figure BDA0003582783010000087
S1:判断置乱拼接规则参数rule_Perm的数值,
如果rule_Perm=0,则将置乱后的二进制分层序列
Figure BDA0003582783010000088
和置乱后的二进制分层序列
Figure BDA0003582783010000089
顺序拼接,即
Figure BDA00035827830100000810
如果rule_Perm=1,则将置乱后的二进制分层序列
Figure BDA00035827830100000811
先前后翻转,再和置乱后的二进制分层序列
Figure BDA00035827830100000812
顺序拼接,即
Figure BDA00035827830100000813
如果rule_Perm=2,则将置乱后的二进制分层序列
Figure BDA00035827830100000814
和前后翻转的置乱后二进制分层序列
Figure BDA00035827830100000815
顺序拼接,即
Figure BDA00035827830100000816
如果rule_Perm=3,则将置乱后的二进制分层序列
Figure BDA00035827830100000817
和置乱后的二进制分层序列
Figure BDA00035827830100000818
顺序拼接,并将拼接后序列前后翻转,即
Figure BDA00035827830100000819
如果rule_Perm=4,则将置乱后的二进制分层序列
Figure BDA00035827830100000820
和置乱后的二进制分层序列
Figure BDA00035827830100000821
顺序拼接,即
Figure BDA00035827830100000822
如果rule_Perm=5,则将置乱后的二进制分层序列
Figure BDA0003582783010000091
先前后翻转,再和置乱后的二进制分层序列
Figure BDA0003582783010000092
顺序拼接,即
Figure BDA0003582783010000093
如果rule_Perm=6,则将置乱后的二进制分层序列
Figure BDA0003582783010000094
和前后翻转的置乱后二进制分层序列
Figure BDA0003582783010000095
顺序拼接,即
Figure BDA0003582783010000096
否则,则将置乱后的二进制分层序列
Figure BDA0003582783010000097
和置乱后的二进制分层序列
Figure BDA0003582783010000098
顺序拼接,并将拼接后序列前后翻转,即
Figure BDA0003582783010000099
从而得到置乱拼接后的二进制分层序列
Figure BDA00035827830100000910
S2:首先将置乱拼接后的二进制分层序列
Figure BDA00035827830100000911
中元素从头到尾依次正向以10个元素为单位进行分组,得到
Figure BDA00035827830100000912
个分组序列并利用bin2dec()函数依次将各分组序列转换为数值型数据,将转换后的数值型数据之和记为DFj,其中函数
Figure BDA00035827830100000913
表示为不小于2L/10的最小整数,
然后更新置乱拼接规则参数rule_Perm=mod(DFj,8),且令j=j+1,接着判断j的大小,如果j≤10,则转入步骤S1,否则转入步骤S3,
S3:结束二进制分层序列的置乱拼接操作,从而得到置乱拼接后的二进制分层序列,表示为
Figure BDA00035827830100000914
并将其按行依次填入二进制矩阵CC中,表示如下,
Figure BDA00035827830100000915
最后,依次取列序列CC(:,m)的前5位且在其首端加上二进制‘1’、尾端加上二进制‘0’,并采用bin2dec()函数转换成数值型数据,得到数值型数据D1m,即D1m=bin2dec(['1',(CC(1:5,m))T,'0']);同时依次取列序列CC(:,m)的后5位且在其首端加上二进制‘1’、尾端加上二进制‘0’,并采用bin2dec()函数转换成数值型数据,得到数值型数据D2m,即D2m=bin2dec(['1',(CC(6:10,m))T,'0']),其中m=1,2,3,...,2L,从而得到数值序列D={D1,D2,...,D4L-1,D4L}={D11,D21,D12,D22,...,D12L,D22L};
(3)转码
利用函数char(·),将数值序列D={D1,D2,...,D4L-1,D4L}中元素依次进行数值与字符的转换,得到字符序列C,即为该段待加密字符串的加密密文,其中字符序列C的长度为4L。
下面结合具体的实施例对本发明作进一步说明:
实施例1
按照上述一种基于分层置乱的字符串加密方法,步骤如下:
(1)转码
首先,将某段待加密字符串A=“字符串“abc123!@#”的加密:先输入一个字符串,进行加密,最后将加密后的字符添加到一个空的string中输出。”,逐字转换为数值型数据,得到高位数值序列P1={215,183,180,161,0,0,0,0,0,0,0,0,0,161,181,188,195,163,207,202,200,210,184,215,183,180,163,189,208,188,195,163,215,186,189,188,195,186,181,215,183,204,188,181,210,184,191,181,0,0,0,0,0,0,214,202,179,161}和低位数值序列P2={214,251,174,176,97,98,99,49,50,51,33,64,35,177,196,211,220,186,200,228,235,187,246,214,251,174,172,248,208,211,220,172,238,243,171,211,220,243,196,214,251,237,211,189,187,246,213,196,115,116,114,105,110,103,208,228,246,163},
然后,利用dec2bin(·,10),将高位数值序列P1中元素P1i逐个转换成10bits的二进制序列{PB1i1,PB1i2,PB1i3,PB1i4,PB1i5,PB1i6,PB1i7,PB1i8,PB1i9,PB1i10},并按列填入矩阵,得到二进制矩阵B1,
Figure BDA0003582783010000101
最后,利用dec2bin(·,10),将低位数值序列P2中元素P2i逐个转换成12bits的二进制序列{PB2i1,PB2i2,PB2i3,PB2i4,PB2i5,PB2i6,PB2i7,PB2i8,PB2i9,PB2i10},并按列填入矩阵,得到二进制矩阵B2,
Figure BDA0003582783010000111
其中,某段待加密字符串A的长度表示为L=58,数值序列P1和P2的长度均为L=58,二进制矩阵B1和B2的大小均为10×58;
(2)分层置乱
首先,对二进制矩阵B1按行进行分层,得到相应10个二进制分层序列,表示为
Figure BDA0003582783010000112
同样对二进制矩阵B2按行进行分层,得到相应10个二进制分层序列,表示为
Figure BDA0003582783010000113
其中j=1,2,...,11,12,
接着,利用外部加密密钥α=0.12345和β=3.75,按照如下公式分别计算得到混沌系统的初值x1,参数μ,初始迭代步数m1、m2,以及抽取间隔n1、n2
Figure BDA0003582783010000114
Figure BDA0003582783010000115
由混沌系统的初值x1和参数μ,对Logistic混沌映射进行迭代,得到混沌序列X,从第221个元素开始每隔205个元素取1个,从而形成长度为10的混沌序列Y={0.208513889117461,0.921695552897348,0.861750550643000,0.934401238824754,0.697108481519377,0.583903143069433,0.888778102259309,0.907730481883299,0.407067361462072,0.322638967069882},并从第554个元素开始每隔83个元素取1个,从而形成长度为10的混沌序列Z={0.840705983341677,0.439457289575278,0.252304066626676,0.947223094830140,0.786316006211482,0.267516869591975,0.326424649696977,0.585559374934936,0.684451732123479,0.939975908548840},
将混沌序列Y按降序排序,将序列Y排序前、后的位置变化置乱规则记为T1={4,2,8,7,3,5,6,9,10,1},同时将混沌序列Z按降序排序,将序列Z排序前、后的位置变化置乱规则记为T2={4,10,1,5,9,8,2,7,6,3},
利用位置变化置乱规则T1对二进制分层序列
Figure BDA0003582783010000121
进行置乱,得到置乱后的二进制分层序列
Figure BDA0003582783010000122
同样利用位置变化置乱规则T2对二进制分层序列
Figure BDA0003582783010000123
进行置乱,得到置乱后的二进制分层序列
Figure BDA0003582783010000124
其中j=1,2,...,9,10;
然后,将置乱后的二进制分层序列
Figure BDA0003582783010000125
Figure BDA0003582783010000126
依次进行置乱拼接操作,得到二进制矩阵CC,
Figure BDA0003582783010000127
最后,按列依次将二进制矩阵CC的列序列CC(:,m)转换成数值型数据D1m和D2m,其中m=1,2,3,...,116,从而得到数值序列D={82,68,102,124,102,104,108,116,116,64,102,64,118,64,100,64,102,64,118,64,108,80,120,80,102,80,84,116,88,116,122,112,120,76,126,124,104,92,108,80,118,88,102,72,126,112,90,84,118,124,110,120,68,108,100,108,120,80,98,112,104,92,68,108,78,92,126,112,110,124,98,112,80,92,118,96,96,100,106,68,70,108,100,72,122,112,108,124,86,72,86,96,96,100,80,100,86,64,68,64,86,64,116,72,102,72,118,64,64,64,76,80,126,116,110,116,66,66,66,110,102,106,98,78,64,96,64,96,64,64,64,68,64,100,64,68,64,96,68,108,68,100,98,78,66,102,70,70,102,98,66,78,98,110,66,98,70,78,98,110,70,70,70,66,70,78,98,106,66,106,98,110,70,70,98,70,70,70,66,106,66,98,66,78,98,110,70,102,98,78,102,66,102,106,102,74,66,78,98,110,70,70,66,98,66,70,66,66,66,66,66,66,64,68,64,68,64,68,64,64,64,64,64,64,66,70,66,98,66,78,98,110};
(3)转码
利用函数char(·),将数值序列D中元素依次进行数值与字符的转换,得到字符序列C=“RDf|fhltt@f@v@d@f@v@lPxPfPTtXtzpxL~|h\lPvXfH~pZTv|nxDldlxPbph\DlN\~pn|bpP\v``djDFldHzpl|VHV``dPdV@D@V@tHfHv@@@LP~tntBBBnfjbN@`@`@@@D@d@D@`DlDdbNBfFFfbBNbnBbFNbnFFFBFNbjBjbnFFbFFFBjBbBNbnFfbNfBfjfJBNbnFFBbBFBBBBBB@D@D@D@@@@@@BFBbBNbn”,即为该段待加密字符串的加密密文,其中字符序列C的长度为232。
实施例2
按照上述一种基于分层置乱的字符串加密方法,某段待加密字符串为“字符串“abc123!@#”的加密:先输入一个字符串,进行加密,最后将加密后的字符添加到一个空的string中输出。”,其加密步骤与具体实施例1相似,仅外部加密密钥发生细微变化:α=0.123450000001;或β=3.750000000001,字符串加密结果如表1所示。由表1可知,外部加密密钥的细微变化会引起字符串加密密文发生很大的变化,由此可见本专利所提一种基于分层置乱的字符串加密方法对外部加密密钥具有敏感性。
表1外部加密密钥发生微变时,字符串加密结果
Figure BDA0003582783010000131
Figure BDA0003582783010000141
实施例3
按上述一种基于分层置乱的字符串加密方法,其加密步骤与具体实施例1相似,仅某段待加密字符串发生细微变化:“子符串“abc123!@#”的加密:先输入一个字符串,进行加密,最后将加密后的字符添加到一个空的string中输出。”;或“字符串“abc123!@#”的加蜜:先输入一个字符串,进行加密,最后将加密后的字符添加到一个空的string中输出。”;或“字符串“abc123!@#”的加密:先输入一个字符串,进行加密,最石将加密后的字符添加到一个空的string中输出。”;或“字符串“abc123!@#”的加密:先输入一个字符串,进行加密,最后将加密后的字符添加到两个空的string中输出。”;或“字符串“abc123!@#”的加密:先输入一个字符串,进行加密,最后将加密后的字符添加至一个空的string中输出!”,字符串加密结果如表2所示。由表2可见:待加密字符串平文信息的细微变化会引起加密密文的“面目全非”,由此可见本专利所提一种基于分层置乱的字符串加密方法对待加密字符串的平文信息具有敏感性。
表2待加密字符串发生微变时,字符串加密结果
Figure BDA0003582783010000142
Figure BDA0003582783010000151
Figure BDA0003582783010000161
由上述具体实施例2、3分析可知,本专利所提一种基于分层置乱的字符串加密方法所生成的字符串加密密文不仅与外部加密密钥密切相关,而且依赖于待加密字符串平文信息,因此本专利所提一种基于分层置乱的字符串加密方法可抵抗已知/选择明文攻击,具有很强的安全性。

Claims (3)

1.一种基于分层置乱的字符串加密方法,其特征在于,包括如下几个步骤:
(1)转码
首先,将某段待加密字符串A逐字转换为数值型数据[Pi1,Pi2],得到高位数值序列P1={P11,P12,...,P1i,....,P1L}={P11,P21,...,Pi1,....,PL1}和低位数值序列P2={P21,P22,...,P2i,....,P2L}={P12,P22,...,Pi2,....,PL2},
然后,利用函数dec2bin(·,10),将高位数值序列P1中元素P1i逐个转换成10bits的二进制序列{PB1i1,PB1i2,PB1i3,PB1i4,PB1i5,PB1i6,PB1i7,PB1i8,PB1i9,PB1i10},并按列填入矩阵,得到二进制矩阵B1,
Figure FDA0003582780000000011
最后,利用函数dec2bin(·,10),将低位数值序列P2中元素P2i逐个转换成12bits的二进制序列{PB2i1,PB2i2,PB2i3,PB2i4,PB2i5,PB2i6,PB2i7,PB2i8,PB2i9,PB2i10},并按列填入矩阵,得到二进制矩阵B2,
Figure FDA0003582780000000012
其中,某段待加密字符串A包括GB2312字符集中的中文标点符号、GB2312字符集中双字节编码的汉字和ASCLL码值∈[32,126]的可见字符,某段待加密字符串A的长度表示为L,数值序列P1和P2的长度均为L,二进制矩阵B1和B2的大小为10×L;
(2)分层置乱
首先,对二进制矩阵B1按行进行分层,得到相应10个二进制分层序列,表示为
Figure FDA0003582780000000021
同样对二进制矩阵B2按行进行分层,得到相应10个二进制分层序列,表示为
Figure FDA0003582780000000022
其中j=1,2,...,9,10,
接着,利用外部加密密钥α和β,按照如下公式(1)分别计算得到混沌系统的初值x1,参数μ,初始迭代步数m1、m2,以及抽取间隔n1、n2
Figure FDA0003582780000000023
Figure FDA0003582780000000024
其中,
Figure FDA0003582780000000025
分别表示二进制分层序列
Figure FDA0003582780000000026
中含二进制‘1’的个数,函数
Figure FDA0003582780000000027
表示为不大于ε的最大整数,外部密钥满足α∈(0,1),β∈(3.57,4),
由混沌系统的初值x1和参数μ,对如下公式(2)所示Logistic混沌映射进行迭代,式中k表示迭代次数、xk+1表示第k次迭代得到的混沌信号,k=1,2,...,max(m1+10n1,m2+10n2),
xk+1=μ×xk×(1-xk) (2)
得到混沌序列X,从第m1个元素开始每隔n1个元素取1个,从而形成长度为10的混沌序列Y,并从第m2个元素开始每隔n2个元素取1个,从而形成长度为10的混沌序列Z,
将混沌序列Y按降序排序,将序列Y排序前、后的位置变化置乱规则记为T1={T11,T12,...,T19,T110},同时将混沌序列Z按降序排序,将序列Z排序前、后的位置变化置乱规则记为T2={T21,T22,...,T29,T210},
利用位置变化置乱规则T1对二进制分层序列
Figure FDA0003582780000000028
进行置乱,得到置乱后的二进制分层序列
Figure FDA0003582780000000029
同样利用位置变化置乱规则T2对二进制分层序列
Figure FDA00035827800000000210
进行置乱,得到置乱后的二进制分层序列
Figure FDA0003582780000000031
其中j=1,2,...,9,10;
然后,将置乱后的二进制分层序列
Figure FDA0003582780000000032
Figure FDA0003582780000000033
依次进行如下置乱拼接操作:
S0:令j=1,置乱拼接规则参数
Figure FDA0003582780000000034
S1:判断置乱拼接规则参数rule_Perm的数值,
如果rule_Perm=0,则将置乱后的二进制分层序列
Figure FDA0003582780000000035
和置乱后的二进制分层序列
Figure FDA0003582780000000036
顺序拼接,即
Figure FDA0003582780000000037
如果rule_Perm=1,则将置乱后的二进制分层序列
Figure FDA0003582780000000038
先前后翻转,再和置乱后的二进制分层序列
Figure FDA0003582780000000039
顺序拼接,即
Figure FDA00035827800000000310
如果rule_Perm=2,则将置乱后的二进制分层序列
Figure FDA00035827800000000311
和前后翻转的置乱后二进制分层序列
Figure FDA00035827800000000312
顺序拼接,即
Figure FDA00035827800000000313
如果rule_Perm=3,则将置乱后的二进制分层序列
Figure FDA00035827800000000314
和置乱后的二进制分层序列
Figure FDA00035827800000000315
顺序拼接,并将拼接后序列前后翻转,即
Figure FDA00035827800000000316
如果rule_Perm=4,则将置乱后的二进制分层序列
Figure FDA00035827800000000317
和置乱后的二进制分层序列
Figure FDA00035827800000000318
顺序拼接,即
Figure FDA00035827800000000319
如果rule_Perm=5,则将置乱后的二进制分层序列
Figure FDA00035827800000000320
先前后翻转,再和置乱后的二进制分层序列
Figure FDA00035827800000000321
顺序拼接,即
Figure FDA00035827800000000322
如果rule_Perm=6,则将置乱后的二进制分层序列
Figure FDA00035827800000000323
和前后翻转的置乱后二进制分层序列
Figure FDA00035827800000000324
顺序拼接,即
Figure FDA00035827800000000325
否则,则将置乱后的二进制分层序列
Figure FDA00035827800000000326
和置乱后的二进制分层序列
Figure FDA00035827800000000327
顺序拼接,并将拼接后序列前后翻转,即
Figure FDA00035827800000000328
从而得到置乱拼接后的二进制分层序列
Figure FDA00035827800000000329
S2:首先将置乱拼接后的二进制分层序列
Figure FDA00035827800000000330
中元素从头到尾依次正向以10个元素为单位进行分组,得到
Figure FDA0003582780000000041
个分组序列并利用bin2dec()函数依次将各分组序列转换为数值型数据,将转换后的数值型数据之和记为DFj,其中函数
Figure FDA0003582780000000042
表示为不小于2L10的最小整数,
然后更新置乱拼接规则参数rule_Perm=mod(DFj,8),且令j=j+1,接着判断j的大小,如果j≤10,则转入步骤S1,否则转入步骤S3,
S3:结束二进制分层序列的置乱拼接操作,从而得到置乱拼接后的二进制分层序列,表示为
Figure FDA0003582780000000043
并将其按行依次填入二进制矩阵CC中,表示如下,
Figure FDA0003582780000000044
最后,按列依次将二进制矩阵CC的列序列CC(:,m)转换成数值型数据D1m和D2m,其中m=1,2,3,...,2L,从而得到数值序列D={D1,D2,...,D4L-1,D4L}={D11,D21,D12,D22,...,D12L,D22L};
(3)转码
利用函数char(·),将数值序列D={D1,D2,...,D4L-1,D4L}中元素依次进行数值与字符的转换,得到字符序列C,即为该段待加密字符串的加密密文,其中字符序列C的长度为4L。
2.根据权利要求1所述的一种基于分层置乱的字符串加密方法,其特征在于:步骤(1)中所述的将某段待加密字符串A逐字转换为数值型数据[Pi1,Pi2],是指将某段待加密字符串A中逐个字符采用unicode2native(·)函数转换为数值型数据,即[Pi1,Pi2]=unicode2native(Ai),将单个汉字转换为区位码数值数据,表示为[区数值数据,位数值数据],或将ASCII码值属于[32,126]的可见字符转换为ASCII码数值数据,表示为[0,ASCII码数值数据],从而得到高位数值序列P1={P11,P12,...,P1i,....,P1L}={P11,P21,...,Pi1,....,PL1}和低位数值序列P2={P21,P22,...,P2i,....,P2L}={P12,P22,...,Pi2,....,PL2}。
3.根据权利要求1所述的一种基于分层置乱的字符串加密方法,其特征在于:步骤(2)中所述的按列依次将二进制矩阵CC的列序列CC(:,m)转换成数值型数据D1m和D2m,是指取列序列CC(:,m)的前5位且在其首端加上二进制‘1’、尾端加上二进制‘0’,并采用bin2dec()函数转换成数值型数据,得到数值型数据D1m,即D1m=bin2dec(['1',(CC(1:5,m))T,'0']);同时取列序列CC(:,m)的后5位且在其首端加上二进制‘1’、尾端加上二进制‘0’,并采用bin2dec()函数转换成数值型数据,得到数值型数据D2m,即D2m=bin2dec(['1',(CC(6:10,m))T,'0'])。
CN202210358275.7A 2022-04-06 2022-04-06 一种基于分层置乱的字符串加密方法 Withdrawn CN114707165A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210358275.7A CN114707165A (zh) 2022-04-06 2022-04-06 一种基于分层置乱的字符串加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210358275.7A CN114707165A (zh) 2022-04-06 2022-04-06 一种基于分层置乱的字符串加密方法

Publications (1)

Publication Number Publication Date
CN114707165A true CN114707165A (zh) 2022-07-05

Family

ID=82173273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210358275.7A Withdrawn CN114707165A (zh) 2022-04-06 2022-04-06 一种基于分层置乱的字符串加密方法

Country Status (1)

Country Link
CN (1) CN114707165A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115426004A (zh) * 2022-11-04 2022-12-02 摩尔线程智能科技(北京)有限责任公司 用于抑制信号线中电磁辐射的装置、方法和电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115426004A (zh) * 2022-11-04 2022-12-02 摩尔线程智能科技(北京)有限责任公司 用于抑制信号线中电磁辐射的装置、方法和电子设备
CN115426004B (zh) * 2022-11-04 2023-10-24 摩尔线程智能科技(北京)有限责任公司 用于抑制信号线中电磁辐射的装置、方法和电子设备

Similar Documents

Publication Publication Date Title
CN108090329B (zh) 一种对文本内容进行数字水印加密保护的方法及装置
CN109995504B (zh) 一种字符串的加密和解密方法
CN114553391A (zh) 一种基于分层移位的字符串加密方法
CN101894244B (zh) 电子资料加密系统及方法
CN116032474A (zh) 一种基于大数据计算机网络安全防护系统
CN111353166B (zh) 一种图片转汉字的加密方法
CN109981245B (zh) 一种字符串的加密、解密方法
CN108418683B (zh) 一种基于汉字结构特征的无载体文本隐写方法
CN112884104A (zh) 一种基于混沌加密的商品防伪二维码生成方法
CN113255860B (zh) 一种基于分层加密的商品防伪二维码生成方法
CN110011783A (zh) 一种汉字的加密、解密方法
CN105095699A (zh) 水印信息嵌入方法和装置以及水印信息解码方法
CN112149774B (zh) 一种汉字商品防伪码生成方法
CN114465709A (zh) 一种基于分层移位的字符串解密方法
CN114707165A (zh) 一种基于分层置乱的字符串加密方法
CN109981246B (zh) 一种字符串的加密方法和解密方法
Elmahi et al. Text steganography using compression and random number generators
CN110650006B (zh) 一种中英文字符串的加密和解密方法
JP2008099243A (ja) 誤り訂正符号化装置、誤り訂正符号化方法及びプログラム
CN114741712A (zh) 一种基于分层置乱的汉字加密方法
CN114553393A (zh) 一种基于分层移位的汉字加密方法
CN104393988B (zh) 一种可逆的数据加密方法及装置
CN116566597A (zh) 基于比特币地址混淆密文的可控安全等级隐蔽通信方法
CN110278066B (zh) 一种中文字符串的加密、解密方法
CN110287713B (zh) 一种中文字符串的加密方法和解密方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20220705

WW01 Invention patent application withdrawn after publication