混沌加密
更新时间:2023-09-22 16:32:01 阅读量: 经管营销 文档下载
网络安全综合设计
课题名称:基于混沌的JPG图像加密系统 专业班级:信息安全11-1班 姓 名: 学 号:
1.问题描述
混沌系统由于对初值的敏感性,很小的初值误差就能被系统放大,因此,系统的长期性是不可预测的。又因为混沌序列具有很好的统计特性,所以它可以产生随机数列,这些特性很适合于序列加密技术。混沌系统的特性使得它在数值分布上不符合概率统计学原理,得不到一个稳定的概率分布特征。因此从理论上讲,利用混沌原理对数据进行加密可以防范频率分析攻击、穷举攻击等攻击方法,使得密码难于分析、破译。
2.基本要求
在MATLAB环境下利用混沌系统实现JPG图像的加密。
3.算法描述
设A表示大小为M*N的图像。由于JPG图像为彩色图像,所以先将图像分为R、G、B三层,然后对每层分别加密,再将加密后的三层合成图像。又由于JPG图像为压缩图像,若加密后的图像保存为JPG格式则会导致失真,因此将加密后的图像保存为bmp格式(无损不压缩)。
加密算法:
(l)给定两个Logistic系统的参数U1和U2,并给定两个系统初值x1和x2。
(2)取原始图像A的M+A的值之和,该和对256取余运算,得到一个[0,255]范围的整数,然后以该整数除以256,得到的结果作为辅助密钥k。
(3)用辅助密钥k修改混沌系统的初始值作为logistic混沌系统的初始值,构造2个长度为 M*N的实数混沌序列。
(4)将由步骤(3)得到的2个实数混沌序列进行转换,得到2个改进的混沌序列。 (5)顺序取图像中的一点,根据该点是奇数点或是偶数点生成两组加密秘钥。
(6)用原始图像A中的第n个像素点灰度值A(x,y)与步骤(5)产生的logistic密钥值进行按二进制位异或操作,得到加密后的像素值A’(x,y)。
(7)重复(5)—(6)步,直到将将所有像素点加密完毕,即得到加密图像A’。 解密过程类似。
由于混沌系统的最大特性是初值的改变会对系统产生极大影响,因此为验证系统的性能,用两种初值对图片进行加密后,将两种加密后的图片进行对比。 对比方法:
将加密后的两张图片的R、G、B层的相应位的像素值分别相减,将相减后的像素值构成的R、G、B层合成一张图片。若两张图片相同,则对比图片为全黑色,相差越多图片越杂乱。
4.模块划分
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%加密按钮的回调函数 str1=get(handles.edit1,'String'); str2=get(handles.edit2,'String'); str=strcat(str1,'\\',str2);
A=imread(str);%原图像
%将r g b 三层按矩阵形式分别存储到AR AG AB中 AR=A(:,:,1); AG=A(:,:,2); AB=A(:,:,3);
[M,N]=size(AR); %[m,n] = size(X)返回矩阵X的尺寸信息, 并存储在m、n中。其中m中存储的是行数,n中存储的是列数。
%给定两个Logistic系统的参数u1和u2,并给定两个系统初值 u1=4; u2=4;
x1(1)=0.299998; x2(1)=0.799998;
sumA=M+N; %原始图像A的所有像素的值的和 k=mod(sumA,256)*1.0/255;%得到辅助秘钥k
%用辅助秘钥修改混沌初值,以修改后的作为logistic混沌系统的初始值 x1(1)=(x1(1)+k)/2; x2(1)=(x2(1)+k)/2;
y1(1)=(1/3.1415926)*asin(sqrt(x1(1))); y2(1)=(1/3.1415926)*asin(sqrt(x2(1))); %产生两个长度为m*n的实数混沌序列 for i=1:1:M*N-1
x1(i+1)=u1*x1(i)*(1-x1(i)); x2(i+1)=u2*x2(i)*(1-x2(i)); end
%得到两个长度为m*n的改进混沌序列 for i=1:1:M*N
y1(i)=(1/3.1415926)*asin(sqrt(x1(i))); y2(i)=(1/3.1415926)*asin(sqrt(x2(i))); end
%顺序取图中一点,若该点的序号属于奇数,则由实数混沌序列的y1(n)构造加密秘钥,若为偶数,则由y2(n)构造加密秘钥。 n=1;
for i=1:1:M
for j=1:1:N
if mod(n,1)==0
k(n)=mod(floor(y1(n)*10^15),256); else
k(n)=mod(floor(y2(n)*10^15),256);
end
%用原始图像A中的第n个像素点灰度值与秘钥k(n)进行按二进制位异或操作,得到加密后的像素值
AR1(i,j)=bitxor(AR(i,j),k(n)); AG1(i,j)=bitxor(AG(i,j),k(n)); AB1(i,j)=bitxor(AB(i,j),k(n)); n=n+1; end end
%对比加密 u1=4; u2=4;
x1(1)=0.299999; x2(1)=0.799999;
sumA=M+N; %原始图像A的所有像素的值的和 k=mod(sumA,256)*1.0/255;%得到辅助秘钥k
%用辅助秘钥修改混沌初值,以修改后的作为logistic混沌系统的初始值 x1(1)=(x1(1)+k)/2; x2(1)=(x2(1)+k)/2;
y1(1)=(1/3.1415926)*asin(sqrt(x1(1))); y2(1)=(1/3.1415926)*asin(sqrt(x2(1))); %产生两个长度为m*n的实数混沌序列 for i=1:1:M*N-1
x1(i+1)=u1*x1(i)*(1-x1(i)); x2(i+1)=u2*x2(i)*(1-x2(i)); end
%得到两个长度为m*n的改进混沌序列 for i=1:1:M*N
y1(i)=(1/3.1415926)*asin(sqrt(x1(i))); y2(i)=(1/3.1415926)*asin(sqrt(x2(i))); end
%顺序取图中一点,若该点的序号属于奇数,则由实数混沌序列的y1(n)构造加密秘钥,若为偶数,则由y2(n)构造加密秘钥。 n=1;
for i=1:1:M
for j=1:1:N
if mod(n,1)==0
k(n)=mod(floor(y1(n)*10^15),256); else
k(n)=mod(floor(y2(n)*10^15),256); End
%用原始图像A中的第n个像素点灰度值与秘钥k(n)进行按二进制位异或操作,得到加密后的像素值
YR(i,j)=bitxor(AR(i,j),k(n));
YG(i,j)=bitxor(AG(i,j),k(n)); YB(i,j)=bitxor(AB(i,j),k(n)); n=n+1; end end n=1;
for i=1:1:M
for j=1:1:N
YR1(i,j)=abs(YR(i,j)-AR1(i,j)); YG1(i,j)=abs(YG(i,j)-AG1(i,j)); YB1(i,j)=abs(YB(i,j)-AB1(i,j)); end end
Y1(:,:,1)=YR1; Y1(:,:,2)=YG1; Y1(:,:,3)=YB1;
%得到加密后的图像A1 A1(:,:,1)=AR1; A1(:,:,2)=AG1; A1(:,:,3)=AB1;
str_1=strcat(str1,'\\','jiami_',str2,'.bmp'); imwrite(A1,str_1,'bmp');
str_2=strcat(str1,'\\','duibi_jiami_',str2,'.bmp'); imwrite(Y1,str_2,'bmp');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%解密按钮的回调函数 str3=get(handles.edit3,'String'); str4=get(handles.edit4,'String'); str=strcat(str3,'\\',str4); A=imread(str);
%将r g b 三层按矩阵形式分别存储到AR_jiami AG_jiami AB_jiami中 AR=A(:,:,1); AG=A(:,:,2); AB=A(:,:,3); [M,N]=size(AR);
%生成y1和y2序列 u1=4; u2=4;
x1(1)=0.299998; x2(1)=0.799998; sumA=M+N;
k=mod(sumA,256)*1.0/255; x1(1)=(x1(1)+k)/2; x2(1)=(x2(1)+k)/2;
y1(1)=(1/3.1415926)*asin(sqrt(x1(1))); y2(1)=(1/3.1415926)*asin(sqrt(x2(1))); for i=1:1:M*N-1
x1(i+1)=u1*x1(i)*(1-x1(i)); x2(i+1)=u2*x2(i)*(1-x2(i)); end
for i=1:1:M*N
y1(i)=(1/3.1415926)*asin(sqrt(x1(i))); y2(i)=(1/3.1415926)*asin(sqrt(x2(i))); end n=1;
for i=1:1:M
for j=1:1:N
if mod(n,1)==0
k(n)=mod(floor(y1(n)*10^15),256); else
k(n)=mod(floor(y2(n)*10^15),256); end
AR2(i,j)=bitxor(AR(i,j),k(n)); AG2(i,j)=bitxor(AG(i,j),k(n)); AB2(i,j)=bitxor(AB(i,j),k(n)); n=n+1; end end
A2(:,:,1)=AR2; A2(:,:,2)=AG2; A2(:,:,3)=AB2;
str_1=strcat(str3,'\\','jiemi_',str4,'.jpg'); imwrite(A2,str_1,'jpg');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结束
5.数据测试
此系统也可以对bmp类型的图像进行加密。
正在阅读:
混沌加密09-22
班主任争先创优个人工作总结04-10
童年的那片花海作文600字06-23
小学生作文快乐的300字06-15
这件事让我后悔作文500字06-24
优秀毕业生申请书范文【精选5篇】03-22
数据结构(C语言)经典试题库附含答案解析01-20
初安复习资料(答案)09-12
2016年粉笔联考模考第四季试题01-22
拿到报告书后作文800字06-26
- 教育局拟征求中考升学奖励制度
- 2020房地产销售主管年终工作总结
- 虚拟多台位互感器检定装置投资项目可行性分析
- 车间工人辞职报告范本
- 溴投资项目可行性分析
- 改名字申请书怎么写
- 忧与爱作文素材
- 溴苯腈投资项目可行性分析
- 2020清华大学考研复试时间:3月6日至22日
- 2020年蚌埠高考查分系统网址
- 2020年二建《建筑工程实务》测试题及答案(13)
- 生死感悟——人间世观感一
- 武陵源区军地小学观看魏书生《如何当好班主任》讲座录像
- 全球10大安全旅游国出炉日本排名第9
- 企业策划书模板
- 高中英语教师工作总结3篇
- 法定代表人证明范本
- 大学助学金申请书范文1700字
- 案外人申请不予执行仲裁裁决司法解释施行首份申请书递交齐齐哈尔...
- 环球国际房地产开发项目策划
- 混沌
- 加密
- 深圳市人民政府关于加强余泥渣土管理的通告(深府〔2002〕80号)
- 100W双管正激变换器设计
- 2020年新编财经类试卷国际商务单证员单证基础理论与知识(国际货物买卖合同)模拟试卷3及答案与解析名师精
- 2014年河北政法干警面试热点解读:冷漠的救护车
- 《深圳市二手房预约买卖及居间服务合同》示范文本
- 人教版小学语文五年级上册快乐阅读十五题及参考答案
- 教你怎样猜字谜
- 南京邮电大学 编译原理 课后习题答案和讲解2
- 天津商业大学考研语言学及翻译(804)A卷
- 2008各省市中考修改病句题汇编
- 中国海洋大学英语专业研究生导师介绍 - 图文
- 浅析一般人格权(案例研究分析)
- book2Unit 4单元测试题2
- 票据法支付结算办法试题 - 1
- 工程材料及机械制造基础习题及答案
- 江西省赣州市2017-2018学年高三下学期高考适应性考试(一)数学(文)试题Word版含答案 - 图文
- 2018年中国离子膜烧碱现状分析及市场前景预测(目录) - 图文
- 发展心理学测试题1
- 果果1班日教育计划(上午) -
- 小学二年级语文上册期末考试试题 - 图文