1 简介 为保护图像信息在通信的传输过程中不被未授权的人员轻易的获取.图像加密解密技术应运而生,并得到长足发展.文章根据对常用的图像加密技术的探索,设计并实现基于混沌理论
1 简介
为保护图像信息在通信的传输过程中不被未授权的人员轻易的获取.图像加密解密技术应运而生,并得到长足发展.文章根据对常用的图像加密技术的探索,设计并实现基于混沌理论,像素级别打乱和隐写术的图像加密算法.利用MATLAB软件对图像像素打乱后,与生成的混沌序列按位异或得到加密图像,最后再将加密图像隐写入载体图像中从而完成最后的加密操作.这样操作后,增加破解者的破解难度,同时也让图像在传输过程中不易引起攻击者的警觉.
2 部分代码
%%clc
clear all
close all
tic
addpath subFunctions
% Data=imread('images\cameraman.tif');
% Data=imread('images\rice.tif');
Data=imread('images\Lena.jpg');
% Data=imread('images\football.jpg');
% Data=imread('images\onion.png');
% Data=imread('images\ORLFace.jpg');
[row,col,dim]=size(Data);
if (dim>1)
Data=rgb2gray(Data); %如果输入图像是彩色图像,则转换为灰度
end
%% 缩放和转换为二进制
% 缩放以将图像转换为 8 像素数组;每个像素为 8 位
% 因此 8 像素将等于 64 位数据
[Data,padding]=Scalling(Data,8);
Data_binary=convert2bin(Data);
%% 键选择和扩展
% 以133457799bbcdff1的形式输入key
hex_key = '133457799bbcdff1';
[bin_key] = Hex2Bin( hex_key );
[K1,K2,K3,K4,K5]=SF_Key_Gen(bin_key);
%% 加密与解密
orignal_msg=[];
encrypt_msg=[];
decrypt_msg=[];
for i=1:size(Data_binary,1)
orignal=Data_binary(i,:);
tic
[cipher]=SF_Encrypt(orignal,K1,K2,K3,K4,K5);
encryption_time(i)=toc;
[plaintext]=SF_Decryption(cipher,K1,K2,K3,K4,K5);
encrypt_msg(:,i)=Binary2Dec(cipher);
decrypt_msg(:,i)=Binary2Dec(plaintext);
end
if (padding~=0)
Data=reshape(Data,[size(Data,1)*size(Data,2) 1]);
Data=Data(1:end-padding);
encrypt_msg=reshape(encrypt_msg,[size(encrypt_msg,1)*size(encrypt_msg,2) 1]);
encrypt_msg=encrypt_msg(1:end-padding);
decrypt_msg=reshape(decrypt_msg,[size(decrypt_msg,1)*size(decrypt_msg,2) 1]);
decrypt_msg=decrypt_msg(1:end-padding);
end
%% 将向量转换为图像
Orignal=uint8(reshape(Data,[row,col]));
Encrypted=uint8(reshape(encrypt_msg,[row,col]));
Decrypted=uint8(reshape(decrypt_msg,[row,col]));
figure
subplot(1,3,1)
imshow(Orignal)
title('原始图像')
subplot(1,3,2)
imshow(Encrypted)
title('加密图像')
subplot(1,3,3)
imshow(Decrypted)
title('解密图像')
figure
subplot(2,1,1)
imhist(Orignal);
subplot(2,1,2)
imhist(Encrypted);
display('Done');
toc
%% 计算加密和原始图像熵
Y=(imhist(Encrypted)+0.00001)/(row*col);
Y=-sum(Y.*log2(Y));
X=(imhist(Orignal)+0.00001)/(row*col);
X=-sum(X.*log2(X));
% disp(['原始信息熵:X,' '加密信息熵:Y' ]);
Re=[X Y]
3 仿真结果
4 参考文献
[1]张英伟. 基于matlab的数字图像des加密解密研究[J]. 信息技术与信息化, 2014(5):2.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。