【圖像加密】基于DNA混沌系統(tǒng)圖像加密含Matlab源碼
1 簡介
混沌系統(tǒng)有著復(fù)雜的動(dòng)力學(xué)行為,采用DNA混沌系統(tǒng)以實(shí)現(xiàn)對(duì)數(shù)字圖像的加密與解密.最后通過采用Matlab仿真軟件,編寫相應(yīng)的加解密程序,給出了仿真的效果圖.
2 部分代碼
clear;clc;
I=imread('加密后的lena.bmp','bmp'); ? ? ? ? ? %讀取圖像信息
[M,N]=size(I); ? ? ? ? ? ? ? ? ? ? ?%將圖像的行列賦值給M,N
t=4; ? ?%分塊大小
SUM=M*N;
%% 2.產(chǎn)生Logistic混沌序列
u=3.99; %Logistic參數(shù)μ
x0=0.3711; %Logistic初值x0
p=zeros(1,SUM+1000);
p(1)=x0;
for i=1:SUM+999 ? ? ? ? ? ? ? ? ? ? ? ?%進(jìn)行N-1次循環(huán)
? ?p(i+1)=u*p(i)*(1-p(i)); ? ? ? ? ?%循環(huán)產(chǎn)生密碼
end
p=p(1001:length(p));
%% 3.將p序列變換到0~255范圍內(nèi)整數(shù),轉(zhuǎn)換成M*N的二維矩陣R
p=mod(ceil(p*10^3),256);
R=reshape(p,N,M)'; ?%轉(zhuǎn)成M行N列
%% 4.四階龍格庫塔法
%求四個(gè)初值X0,Y0,Z0,H0
r=(M/t)*(N/t);
X0=0.5001;
Y0=0.5130;
Z0=0.5170;
H0=0.3237;
A=chen_output(X0,Y0,Z0,H0,r);
X=A(:,1);
X=X(1502:length(X));
Y=A(:,2);
Y=Y(1502:length(Y));
Z=A(:,3);
Z=Z(1502:length(Z));
H=A(:,4);
H=H(1502:length(H));
%% 5.DNA編碼
%X,Y分別決定I和R的DNA編碼方式,有8種,1~8
X=mod(floor(X*10^4),8)+1;
Y=mod(floor(Y*10^4),8)+1;
Z=mod(floor(Z*10^4),3);
Z(Z==0)=3;
Z(Z==1)=0;
Z(Z==3)=1;
H=mod(floor(H*10^4),8)+1;
e=N/t;
for i=r:-1:2
? ?Q1=DNA_bian(fenkuai(t,I,i),H(i));
? ?Q1_last=DNA_bian(fenkuai(t,I,i-1),H(i-1));
? ?Q2=DNA_yunsuan(Q1,Q1_last,Z(i)); ? ? ? ?%擴(kuò)散前
? ?Q3=DNA_bian(fenkuai(t,R,i),Y(i));
? ?Q4=DNA_yunsuan(Q2,Q3,Z(i));
? ?xx=floor(i/e)+1;
? ?yy=mod(i,e);
? ?if yy==0
? ? ? ?xx=xx-1;
? ? ? ?yy=e;
? ?end
? ?Q((xx-1)*t+1:xx*t,(yy-1)*t+1:yy*t)=DNA_jie(Q4,X(i));
end
Q5=DNA_bian(fenkuai(t,I,1),H(1));
Q6=DNA_bian(fenkuai(t,R,1),Y(1));
Q7=DNA_yunsuan(Q5,Q6,Z(1));
Q(1:t,1:t)=DNA_jie(Q7,X(1));
Q=uint8(Q);
imwrite(Q,'解密后的lena.bmp','bmp'); ? ? ?
disp('解密成功'); ?
imshow(Q);
3 仿真結(jié)果





4 參考文獻(xiàn)
[1]谷勝獻(xiàn). 基于混沌和DNA編碼的圖像加密算法設(shè)計(jì)[D]. 大連理工大學(xué), 2015.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)、信號(hào)處理、元胞自動(dòng)機(jī)、圖像處理、路徑規(guī)劃、無人機(jī)等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。
