基于图像加密解密算法
目录
1 引言...............................................1
2设计目的...........................................2
3 设计方案简介......................................2
3.1 基于像素点置乱算法的图像加密技术...................3
3.2 基于行列乱序算法的图像加密技术..................3
3.3 基于色彩饱和度混乱算法的图像加密技术..................3
4 设计条件及主要参数表................................3
4.1 像素点置乱...............................3
4.2 行列乱序..............................3
4.3 色彩饱和度混乱..............................3
5 设计主要参数计算..........................5
6 设计结果..................................5
7 设计的收获体会..................................7
8 参考文献...........................................7
1 引言
随着20世纪90年代internet的迅速发展,多媒体技术的逐渐成熟和电子商务的兴起,网上多媒体信息量急剧膨胀,使得多媒体信息的安全问题变的越来越重要,多媒体信息安全成为学术界和工业界共同关注的新的研究方向。
数字图像是目前最流行的多媒体形式之一,在政治、经济、国防、教育等方面均有广泛应用。Matlab里的imread函数可用于读取图片文件中的数据。读进去的数据为一个三层的矩阵,矩阵的行或列表示图像每一个像素点的位置。矩阵的第一层、第二层、第三层分别代表红、绿、蓝三种像素(RGB色域)。对此,可设计以下几种加密方法:①随机打乱各层的行或列。②随机打乱像素点③像素点RGB值的缩放。
2 设计目的
图像加密是对于在数据传输中,保持图像的安全性有一定的工程实用价值。本课题要求同学对图像加密原理进行学习,在此基础上利用编程语言进行程序的编写,并对不同的加密效果进行比较分析。
3 设计方案简介
目前,图像加密的方案主要有一下几类:1.基于像素点置乱算法的图像加密技术2基于行列乱序算法的图像加密技术3.基于色彩饱和度混乱算法的图像加密技术在这些方案中,基本上都采用了图像置乱技术,只是不同的方案的安全性、复杂性和加密、解密的速度不同,我们将重点讨论基于混沌的图像加密算法。
3.1 基于像素点置乱算法的图像加密技术
图像置乱的功能是将图像中像素的位置或者像素的颜色打乱,将原始图像变换成一个杂乱无章的新图像,如果不知道所使用的置乱变换,就很难恢复出原始图像。基于置乱技术的图像加密技术总体上来说可以等效为对图像矩阵进行有限不的初等变换,从而打乱像素的排列位置。但是初等变换时一维线性变换,其保密性不高。通常,图像置乱是图像信息隐藏、图像信息分存和数字水印等任务的基础性工作,置乱方法的优劣将直接影响其任务的效果,因此我们需要从置乱效果、计算复杂性、抗干扰能力等方面评价一个图像置乱算法的优劣。
3.2 基于行列乱序算法的图像加密技术
打乱矩阵行或列的方法运算步骤少、运算速度快,可对较大图像文件进行加密,缺点是对于一些特殊的图像无法进行加密。下面以随机打乱行为例介绍加密解密方法。
3.3 基于色彩饱和度混乱算法的图像加密技术
像素点RGB值的缩放每个像素都有各自的颜色值,其颜色值按一定倍数缩放,将其原数值进行覆盖,便产生了与原图像不同的图像,起到了加密的作用。这种加密方法加密效果会随倍数的增加其效果会更好,但由于过于简单,易被解密。
4 设计条件及主要参数表
4.1像素点置乱
用imread函数将图像读入矩阵RGB中,假设RGB是一个m行n列3层的矩阵。randsample可产生随机向量,用此函数产生一个值为从1到m*n*3的行向量并返回到r中。这样就可以将原图像矩阵的所有像素点随机打乱,将打乱后的矩阵返回至RGBS中,在用reshape函数将RGBS中的所有元素重置为新的 的矩阵并返回到RGBSS中。用find函数找出向量r内从1 到m的元素的位置并返回到向量f。至此就可以将打乱的图像还原。
4.2行列乱序
用imread函数将图像读入矩阵RGB中,假设RGB是一个m行n列3层的矩阵。randsample可产生随机向量,用此函数产生一个与图像矩阵RGB的行数m相等的整数随机数列并返回到r中。这样就可以将原图像矩阵的行随机打乱,将打乱后的矩阵返回至RGBS中。用find函数找出向量r内从1到m的元素的位置并返回到向量f。至此就可以将打乱的图像还原。
4.3色彩饱和度混乱
用imread函数将图像读入矩阵RGB中,假设RGB是一个m行n列3层的矩阵。Rand函数产生一个m行n列3层的由随机数组成的矩阵,并返回到r中,再返回时可以数乘一个数改变其缩放倍数。用矩阵的点运算,通过点乘、点除,可得到加密解密图像。
5 设计主要参数计算
6 设计结果
(1)像素点置乱
clear
close
clc
G=imread('D:\women\photo.jpg'); %读取图片(为256×256灰度)
subplot(1,3,1);
imshow(G); %显示图像
title('原图') %title一下原图
Gadd=fix(256*rand(256,256,3));%引入的置乱随机矩阵
for i=1:256
for j=1:256
G1(i,j)=0.1*G(i,j)+0.9*Gadd(i,j); %进行加权求和
end
end
subplot(1,3,2)
imshow(G1); %显示图像
title('置乱后的图像')
for i=1:256
for j=1:256
G2(i,j)=(G1(i,j)-0.9*Gadd(i,j))./0.1; %还原图像
end
end
subplot(1,3,3)
imshow(G2); %显示图像
title('恢复后的图像')
(2)行列乱序
行乱
clear
RGB=imread('D:\women\photo.jpg');
s=size(RGB);
r=randsample(s(1),s(1));
RGBS=RGB(r,:,:);
t=1;j=1;f=1:r;
while t<=length(r)
f(j)=find(r==t);
t=t+1;
j=j+1;
end
f;
RGBE=RGBS(f,:,:);
subplot(1,2,1);imshow(RGBS);
title('code','fontsize',20);
subplot(1,2,2);imshow(RGBE);
title('decrypt','fontsize',20);
列乱
clear
RGB=imread('D:\women\photo.jpg');
s=size(RGB);
i=randsample(s(2),s(2));
RGBS=RGB(:,i,:);
t=1;j=1;f=1:i;
while t<=length(i)
f(j)=find(i==t);
t=t+1;
j=j+1;
end
f;
RGBE=RGBS(:,f,:);
subplot(1,2,1);
imshow(RGBS);
title('加密后','fontsize',20);
subplot(1,2,2);imshow(RGBE);
title('解密后','fontsize',20);
(3)色彩饱和度混乱
clear
RGB=imread('D:\women\photo.jpg');
s=size(RGB);
r=rand(s(1),s(2),s(3))*50;
RGBD=im2double(RGB);
RGBS=RGBD.*r;
RGBE=RGBS./r;
subplot(1,2,1);imshow(RGBS);
title('加密后','fontsize',20);
subplot(1,2,2);imshow(RGBE);
title('解密后','fontsize',20);
7设计的收获体会
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
8参考文献
【1】阮秋琦. 数字图像处理学. 电子工业出版社,2001
【2】龚声蓉,刘纯平,王强 .数字图像处理与分析. 清华大学出版社,2006
【3】陈桂明,张明照,戚红雨.应用matlab语言处理数字信号与数字图像.科学出版社,2000
【4】向世明.Visual C++数字图像与图形处理.电子工业出版社,2001
【5】张博.基于Matlab的数字图像置乱方法研究[J].计算机与数字工程,2010,38(007):139- 142.