基于指数放大器与改进Zigzag变换的加密方法

文档序号:31364140发布日期:2022-08-31 15:12阅读:122来源:国知局
基于指数放大器与改进Zigzag变换的加密方法
基于指数放大器与改进zigzag变换的加密方法
技术领域
1.本发明涉及图像加密技术领域,具体涉及一种基于指数放大器与改进zigzag变换的加密方法。


背景技术:

2.随着近些年来计算机科学与通讯技术的迅猛发展,人们日常的通讯方式发生了翻天覆地的变化,多媒体通讯已经逐渐成为人们日常交流信息的重要手段,数字信息包含了图像、音频与文字。其中又以图像所蕴含的信息量最大,保护数字图片因此受到了研究人员的广泛关注,并进行研究以维护这些数据的安全性并保护其免受未经授权的用户的侵害。最常见的图像加密方式为扩散与置乱,该机制的图像密码系统通常包含两个阶段:置乱阶段主要是将图像的信息次序依次打乱,将a像素移动到b像素的位置上,b像素移动到c像素的位置上等,使明文、密钥与密文三者的关系无法通过对密文图像进行统计分析从而获得密钥;扩散阶段则是使明文的任意一位像素都能够影响密码图像中多位的值,在置乱扩散加密体系中,密钥和控制参数的生成是算法安全性和复杂性的决定性要素之一。
3.一个良好的加密算法应该是对密钥敏感的,并且密钥空间足够大以抵抗暴力攻击,同时也应当可以抵抗选择明文攻击、差分攻击与剪切攻击等,近几十年来,基于混沌的图像加密算法被大量的提出来,这些算法可以被分为很多类别,如基于分块的加密算法、基于脱氧核糖核酸(dna)、基于椭圆曲线(ecc)的方案等
4.zigzag变换是一种常见的变换方法。将矩阵中的元素按照“z”字形依次扫描,并将扫描的元素依次存储在一个一维数组内,之后以某种方式将一维数组重构为二维矩阵,上诉过程即为zigzag变换。


技术实现要素:

5.本发明为解决现有图像加密方法中存在的密钥空间不足,随机性不够的问题,以及不能有效抵抗已知明文攻击和选择明文攻击的安全缺陷与zigzag只能适用于方阵导致其泛用性不高的问题,提供了一种基于指数放大器与改进zigzag变换的加密方法。
6.基于指数放大器与改进zigzag变换的加密方法,该方法具体步骤为:
7.设定用户加密解密密钥为:初始图像的哈希值,logistic映射和指数级混沌系统的控制参数与初值,迭代次数;具体由以下步骤实现:
8.步骤一、选择大小为m
×
n的灰度图像作为原始明文图像image;
9.步骤二、计算步骤一所述明文图像image的哈希值k,并对所述哈希值k的每8位一组进行异或运算,获得四个十进制数h1,h2,h3,h4;
10.步骤三、将步骤二生成的h1,h2,h3,h4计算转换为混沌系统的初始值x1f,与控制参数μ
chao
;采用所述初始值x1f与控制参数μ
chao
迭代混沌系统,生成长度为m
×
n+3的混沌序列x
chao
=(x1x2x3......xm×
n+2
xm×
n+3
);
11.步骤四、将获得的混沌序列x
chao
的前m
×
n个元素x1,x2,x3......xm×
n-1
,xm×n的数值
按照从小到大的顺序进行排列,获取索引序列index;
12.步骤五、采用步骤三中生成的混沌序列x
chao
中的剩余三个元素xm×
n+1
,xm×
n+2
,xm×
n+3
,与步骤二生成的h1,h2,h3,h4,生成指数级混沌系统的参数α,μ与初始值x1,用下式表示为:
[0013][0014]
其中,a2,b2,c2,为用户输入的控制值;
[0015]
步骤六、将步骤五生成的a,u,x1带入指数级混沌系统,生成m
×
n的混沌序列chaos=(px1px2px3......pxm×
n-1
pxm×n),所述指数级混沌系统(1d-iltm)如下式表示为:
[0016][0017]
步骤七、将步骤一所述的原始明文图像image转换为位级矩阵im2;
[0018]
步骤八、将步骤七获得的位级矩阵im2的每个像素按照bit的位数分为8个平面,分别为im
2-8
,im
2-7
,im
2-6
,im
2-5
,im
2-4
,im
2-3
,im
2-2
,im
2-1

[0019]
其中im
2-q1
,q1=1,2,3......8,代表第q1个位数的比特值所构成平面,使用者通过分析自身对安全的需求选中从im
2-8
矩阵到第r,个比特值所构成的共8-r个平面;r=8,7......2,1;
[0020]
步骤九、对选中的矩阵平面进行分块,其中第8位平面不分块,其余平面分为大小2x2的块,若包含im
2-g
,g=8,6,4,2,则将im
2-g
平面内的数据翻转;
[0021]
步骤十、对选中的矩阵进行改进的zigzag变换,然后将变换后的比特级矩阵与未被选中的比特级矩阵进行按照比特位的高低重新拼接为比特级矩阵im
m2

[0022]
步骤十一、将比特级矩阵im
m2
由比特级转换为像素级矩阵im
x2
,将所述像素级矩阵im
x2
与步骤六中获得的混沌序列chaos进行异或操作,获得矩阵im
x3

[0023]
采用步骤四获得的索引index与im
x3
进行重新排序,获得数组vetor
cipher

[0024]
将所述数组vetor
cipher
转换为m
×
n的矩阵,即为最终加密图像。
[0025]
本发明的有益效果:本发明提出的基于指数放大器与改进zigzag变换的加密方法,由明文的处理过的明文的哈希函数作为logistic混沌系统的初始值,再将logistic迭代出得数值作为提出的指数级混沌系统的初始值与控制参数,得到明文相关的密钥,再使用改进的zigziag变换进行对明文进行比特级的置乱与扩散,再使用得到的密钥迭代提出的指数级混沌系统,得到伪随机数列。然后使用伪随机对置乱扩散后的图像进行异或,最后使用logistic混沌系统迭代出的值的索引顺序对图像进行索引排序得到最终的密码图,提出的指数级混沌系统的lypunov指数相比现有的混沌系统如logistic、tent映射具有更大的密钥空间,通过测试混沌系统的lypunov指数、分叉图与样本熵等参数表明了其具有更强的随机性,此外混沌系统对初值更敏感,相比于存在的一些算法,提出的算法具有更好的鲁棒性。
附图说明
[0026]
图1为本发明所述的基于指数放大器与改进zigzag变换的加密方法的加密过程流
程图;
[0027]
图2为标准的zigzag变换原理图;
[0028]
图3为采用本发明所述的基于指数放大器与改进zigzag变换的加密方法加密后的效果图:其中图3(a)为“桥”原始图像;其中图3(b)为“桥”加密后的图像;其中图3(c)为“桥”解密后的图像;
[0029]
图4为采用本发明所述的基于指数放大器与改进zigzag变换的加密方法中解密方法的直方图。
具体实施方式
[0030]
具体实施方式一、结合图1说明本实施方式,基于指数放大器与改进zigzag变换的加密方法,该方法中,设定用户加密解密密钥为:初始图像的哈希值,logistic映射和提出的指数级混沌系统的控制参数与初值,迭代次数。
[0031]
基于指数级混沌系统与改进的zigzag变换的图像加密方法,由以下步骤实现:
[0032]
步骤一、选择大小为m
×
n的灰度图像作为原始明文图像image。
[0033]
步骤二、计算步骤一所述明文图像image的哈希值k,本方法中采用sha-256算法,方法如下公式(1)所示:
[0034]
k=hash-256(image)
ꢀꢀꢀ
(1)
[0035]
式中,hash-256()为求哈希值函数,其中k={k1k2
k3..
....k
255k256
}。
[0036]
步骤三、对步骤二获得的256位的哈希值k每8位一组进行异或运算得到h1,h2,h3,h4,由公式(2)所示:
[0037][0038]
式中为异或运算符号,其中ki,i=(1,2,3......256)表示的得到的k中第i位的值。
[0039]
步骤四、将步骤三生成的h1,h2,h3,h4经过计算转换为logistic混沌系统的初始值x1f,与控制参数μ
chaos
,计算方法如公式(3)所示:
[0040][0041]
其中,mod()为取模函数,floor()为取整函数,3.89与0.11为对应混沌系统的控制参数,由用户控制输入。
[0042]
步骤五、利用生成的x1f与控制参数μ
chao
迭代混沌系统生成长度为m
×
n+3的混沌序列x
chaos
=(x1x2x3......xm×
n+2
xm×
n+3
)。
[0043]
步骤六、将得到的混沌序列x
chaos
的前m
×
n个元素x1,x2,x3......xm×
n-1
,xm×n按照数值按照从小到大的顺序进行排列,获取排列顺序的索引index,如公式(4)所示:
[0044]
[~,index]=sort(x1x2x3......xm×
n-1
xm×n)
ꢀꢀꢀ
(4)
[0045]
其中,sort()为排序函数,默认排序方式为从小到大,[~,index]表示获取sort函数中数据的排序索引并命名为index且不返回排序后的序列。
[0046]
步骤七、利用步骤五中生成的混沌序列x
chaos
中的剩余三个元素xm×
n+1
,xm×
n+2
,xm×
n+3
与步骤三生成的h1,h2,h3,h4,生成提出的指数级混沌系统的参数α,μ与初始值x1,如公式(5)所示:
[0047][0048]
其中,10,3.9,0.1,为用户输入的控制值。
[0049]
步骤八、利用公式(6)生成的a,u,x1带入提出的指数级混沌系统,生成大小为m
×
n的混沌序列chaos=(px1px2px3......pxm×
n-1
pxm×n),至此,用于扩散的混沌矩阵chaos生成完毕,提出的混沌系统(1d-iltm)如公式所示(6):
[0050][0051]
步骤九、将步骤一所述的原始明文图像image转换为位级矩阵im2,如公式(7):
[0052]
im2=dec2base(image,2,8)
ꢀꢀꢀ
(7)
[0053]
其中,dec2base(image,2,8)函数功能为将图片image中的像素值转换为八位的二进制数,im2即为转换后的矩阵
[0054]
步骤十、将步骤九得到的并将每个像素按照bit的位数分为8个平面,分别为im
2-8
,im
2-7
,im
2-6
,im
2-5
,im
2-4
,im
2-3
,im
2-2
,im
2-1
,其中im
2-q1
,q1=(1,2,3......8)代表第q1个位数的比特值所构成平面,使用者可以通过分析自身对安全的需求来选中从im
2-8
矩阵到第r,r=(8,7......2,1)个比特所构成的共8-r+1个平面,在实例中,加密从im
2-8
加密至im
2-5
共4个平面。
[0055]
步骤十一、对选中的矩阵平面进行分块,其中第8比特平面不分块,其余被选中的矩阵平面分为大小为2x2的块,实例中将im
2-7
,im
2-6
,im
2-5
三个平面分为2x2大小的块,若被选中的矩阵平面包含im
2-g
,g=(8,6,4,2),则将im
2-g
平面内的数据翻转,实例中将im
2-8
,im
2-6
两个平面进行数据翻转如公式(8):
[0056][0057]
其中,flip()表示将数据翻转。
[0058]
步骤十二、对选中矩阵进行改进的zigzag变换,改进的zigzag变换函数impz()方法如下:
[0059]
首先取读取图像image的行数m与列数n中大的值,如公式(9)所示
[0060]
max=max(m,n)
ꢀꢀꢀ
(9)
[0061]
其中max()函数功能为在参数中取较大的值。
[0062]
生成索引序列indexz=(1,2,3......m
2-1,m2),如公式(10)所示
[0063]
index
z1
=[1:max2]
ꢀꢀꢀ
(10)
[0064]
其中[1:max2]函数的功能为生成从1至max2的整数序列。
[0065]
对生成的索引index
z1
进行z字变换,如公式(11)所示
[0066]
index
z2
=zigzag(index
z1
)
ꢀꢀꢀ
(11)
[0067]
其中,zigzag()函数的功能为对数据进行zigzag变换,具体过程如图2所示。
[0068]
将index
z2
索引小于等于m
×
n的数字放入新的索引index
z3

[0069]
将index
z3
重构为m
×
n的矩阵,如公式(12)所示:
[0070]
index
z3
=reshape(index
z3
,m,n)
ꢀꢀꢀ
(12)
[0071]
其中reshape函数功能是将数据重构为m行n位大小的矩阵。
[0072]
将选中的矩阵按照index
z3
进行置乱。
[0073]
步骤十三,将进行了步骤十二的选中的比特级矩阵与剩下的没有进行步骤十二的比特级矩阵重新按照比特位的高低重新拼接为比特级矩阵im
m2

[0074]
步骤十四、将比特级矩阵im
m2
由比特级转换为像素级矩阵im
x2
,方法如公式(13):
[0075]
im
x2
=bin2dec(im
m2
)
ꢀꢀꢀ
(13)
[0076]
其中,bin2dec()函数功能为将数据从位级转为像素级。
[0077]
步骤十五,将步骤十四中得到的im
x2
与步骤五中得到的混沌序列chaos进行异或操作,如公式(14)所示:
[0078]
im
x3
=bitxor(chaos,im
x2
)
ꢀꢀꢀ
(14)
[0079]
其中bitxor()函数表示将两组数据进行异或操作。
[0080]
步骤十四,利用步骤六中得到的索引index将步骤十三中得到的im
x3
进行重新排序,如公式(15)所示
[0081]
vetor
cipher
=im
x3
(index)
ꢀꢀꢀ
(15)
[0082]
步骤十五,将步骤十四种数组vetor
cipher
转换为m
×
n大小的矩阵,如公式(16)所示:
[0083]
cipher=reshape(vetor
cipher
,m,n)
ꢀꢀꢀ
(16)
[0084]
转换后生成的矩阵cipher即为最终加密图。
[0085]
本实施方式中,还包括解密过程:
[0086]
步骤十六、以明文图像哈希函数dk作为用户解密密钥以步骤三的方式获得dh1,dh2,dh3,dh4,以步骤四的方法计算dx1f,dμ
chaos
,以步骤八的方式获取解密用的混沌序列dx
chaos
=(dx1dx2dx3......dxm×
n+2
dxm×
n+3
),以步骤六的方法获取解密用的索引dindex。
[0087]
步骤十七、以步骤十六得到的中的解密用的索引dindex与dxm×
n+1
,dxm×
n+2
,dxm×
n+3
用步骤七中的方法获得指数级混沌系统的控制参数dα,dμ,dx1,
[0088]
步骤十八、利用步骤十七中获取的参数dα,dμ,dx1按照步骤八的的方法获得解密用的混沌序列dchaos=(dpx1dpx2dpx3......dpxm×
n+2
dpxm×
n+3
)
[0089]
步骤十九、使用步骤十六中的索引dindex获取置乱前的矩阵ac.
[0090]
步骤二十、将ac与步骤十八中得到的dchaos进行异或操作,如公式(17)所示:
[0091]
a=bitxor(dchaos,ac)
ꢀꢀꢀ
(17)
[0092]
步骤二十一、将步骤十八中得到的矩阵a以步骤六的方式将a转换为位级矩阵a2。
[0093]
步骤二十二、按照比特的位数分为八个平面(a
2-8
,a
2-7
,a
2-6
,a
2-5
,a
2-4
,a
2-3
,a
2-2
,a
2-1
),其中a
2-w
,w=(8,7...1)表示第w个比特构成的平面。
[0094]
步骤二十三、将步骤二十二中得到的a
2-w
,w=(8,7...1)八个平面根据加密者使用的安全等级挑选出经过步骤十二的矩阵,若其中包含a
2-g
,g=(8,6,4,2),则将矩阵的数据进行翻转,如公式(18)所示:
[0095][0096]
步骤二十四、对于选中的平面,每个平面生成一个索引,如公式19所示:
[0097]
indexw=[1:m
×
n](w=8,7,6......2,1)
ꢀꢀꢀ
(19)
[0098]
其中indexw,(w=8,7,6......2,1)表示对应的第w比特所成的面的索引。
[0099]
步骤二十五、将选中平面的索引进行步骤十二的变换。
[0100]
步骤二十六、利用进行了步骤二十五的索引恢复索引对应的比特级平面。
[0101]
步骤二十七、将比特级平面重新合并为八位的比特级平面b。
[0102]
步骤二十八、将b转换为十进制的像素级平面b1,如公式(20)所示:
[0103]
b1=bin2dec(b)
ꢀꢀꢀ
(20)
[0104]
其中bin2dec()表示将数据转为十进制。
[0105]
步骤二十九、将步骤二十八得到的b1转换为m
×
n大小的的矩阵g,g即为解密出的原文图像image,如公式(28)所示:
[0106]
g=reshape(b1,m,n)
ꢀꢀꢀ
(28)
[0107]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0108]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1