基于混沌和位运算的图像加密算法.doc
上传人:sy****28 上传时间:2024-09-10 格式:DOC 页数:2 大小:26KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

基于混沌和位运算的图像加密算法.doc

基于混沌和位运算的图像加密算法.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

%基于混沌和位运算的图像加密算法clearclca=imread('rice.png');%读取图片a=double(a);%把矩阵元素变成double型的[m1,n1]=size(a);%读取矩阵a的大小b=zeros(m1,n1*8);%定义一个行m1列n1*8的矩阵fori=1:1:m1%对矩阵a的元素进行十进制到二进制转换forj=1:1:n1fort=0:1:7ifmod(floor(a(i,j)/2^t),2)==1b(i,j*8-t)=1;elseb(i,j*8-t)=0;endendendendq=4;%混沌序列参数b1=b;%定义一个矩阵b1x1(1)=0.3333;%混沌序列初始值forn=1:n1*8+100%产生混沌序列x1(n+1)=q*x1(n)*(1-x1(n));endn=101:1:n1*8+100;%从混沌序列的101项开始取值y1(n-100)=x1(n);[z1,l1]=sort(y1,2);%取混沌序列顺序赋给l1fori=1:1:n1*8%取矩阵b的l1(i)列赋给矩阵b1的i列,得到打乱序列后的矩阵b1b1(:,i)=b(:,l1(i));endx2(1)=0.4444;%打乱矩阵的行form=1:m1+100x2(m+1)=q*x2(m)*(1-x2(m));endm=101:1:m1+100;y2(m-100)=x2(m);[z2,l2]=sort(y2,2);fori=1:1:m1b(i,:)=b1(l2(i),:);endfori=1:1:m1%将矩阵的元素变为十进制forj=1:1:n1a(i,j)=b(i,j*8);fort=1:1:7a(i,j)=a(i,j)+2^t*b(i,j*8-t);endendenda=uint8(a);%将矩阵元素由二进制变为十进制figure,imshow(a);%显示加密后的矩阵a%解密程序是加密程序的逆a=double(a);fori=1:1:m1forj=1:1:n1fort=0:1:7ifmod(floor(a(i,j)/2^t),2)==1b(i,j*8-t)=1;elseb(i,j*8-t)=0;endendendendfori=1:1:m1b1(l2(i),:)=b(i,:);endfori=1:1:n1*8b(:,l1(i))=b1(:,i);endfori=1:1:m1forj=1:1:n1a(i,j)=b(i,j*8);fort=1:1:7a(i,j)=a(i,j)+2^t*b(i,j*8-t);endendenda=uint8(a);figure,imshow(a);%解密图像a