数字图像加密技术
程 clear RGB=imread('lenna.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('加密后','fontsize',20); subplot(1,2,2);imshow(RGBE);title('解密后','fontsize',20);是随着信息安全与保密被重视而发展起来的。
良好的数字图像加密算法一方面可以达到使非法使用者无法破译图像内
容的目的。 Digital image encryption, decryption technology is with the
development of information security and confidentiality are considered. Good digital image encryption algorithm based on the one hand, can achieve the purpose of making illegal users unable to decipher image content.
基于Matlab的数字图像加密 解密技术研究
Contents
1
概述
2
随机打乱各层的行或列
3
像素点随机打乱
4
像素点RGB值的缩放
5
总结
随着社会科学的进步,多媒体技术、信息存储技术的飞 速发展,以及网络普及率的提升,越来越多的数字图像得以 在网络上传输,并逐步成为人们获取信息的主要途径,因此 对图像的安全保密有更高的要求。例如,图像数据所有者在 Internet上传输他所拥有的图像时,为了保护自身的利益,就 需要对发送的图像通过可靠的加密技术进行处理;在远程医 疗系统中,病人的照片等图像数据必须在加密之后才能在网 上传输。于是图像的加密、解密技术就应运而生了。
reshape:该函数可将矩阵重新排列,调用方式为reshape(A,m,n,q)即将
矩阵A重置为m*n*q的矩阵。
find:可找出矩阵中某一元素的位置
2
准备知识
A(b):可将矩阵A中的元素按照向量b的顺序重新排列
原理:
➢ 用imread函数将图像读入矩阵RGB中, RGB是一个m行n 列3层的矩阵。 ➢ 用randsample产生一个与图像矩阵RGB的行数m相等的 整数随机数列并返回到r中。这样就可以将原图像矩阵的行随 机打乱,将打乱后的矩阵返回至RGBS中。 ➢ 用find函数找出向量r内从1到m的元素的位置并返回到向 量f。至此就可以将打乱的图像还原。
加密后
解密后
程
clear RGB=imread('321.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;
t1=1;j1=1;f1=1:i1;
while t1<=length(i1) f1(j1)=find(i1==t1); t1=t1+1; j1=j1+1;
end RGBE1=RGBS1(:,f1,:); RGBE=RGBE1(f,:,:);
subplot(1,2,1);imshow(RGBS1); title('加密后','fontsize',20); subplot(1,2,2);imshow(RGBE); title('解密后','fontsize',20);
优点:
像素点随机打乱算法即将图像文件的每一个像素点 随机打乱。这种算法的加密效果非常好,加密用的随机 数列更提高了这种算法的加密性。
2
准备知识
Matlab里的imread函数可用于读取图片文件中的数据。 读进去的数据为一个三层的矩阵,矩阵的行或列表示图像 每一个像素点的位置。矩阵的第一层、第二层、第三层分 别代表红、绿、蓝三种像素(RGB色域)。对此,可设计 以下几种加密方法:①随机打乱各层的行或列。②随机打 乱像素点③像素点RGB值的缩放。
2
准备知识
imread:用于读取图片文件中的数据,对于RGB图像返回一个m*n*3的矩
阵。
size:该函数返回的是一个行向量,该行向量的第一、二、三个元素分
别是矩阵的行数、列数和层数。
randsample:该函数调用格式为randsample(n,k),其可产生一个元素
数量为k,从1到n的列向量。
end
f;
RGBE=RGBS(:,f,:);
subplot(1,2,1);imshow(RGBS); title('加密后','fontsize',20);
subplot(1,2,2);imshow(RGBE);title('解密后','fontsize',20);
加密后
解密后
程
clear RGB=imread('321.jpg');
序
s=size(RGB);
三
i=randsample(s(1),s(1)); 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
i1=randsample(s(2),s(2));
RGBS1=RGBS(:,i1,:);
加密后
解密后
优点:
打乱矩阵行或列的方法运算步骤少、运算速度快, 可对较大图像文件进行加密。
缺点:
对于一些特殊的图像无法进行加密。
加密后
解密后
原理:
➢用imread函数将图像读入矩阵RGB中, RGB是一个m行n列 3层的矩阵。 ➢randsample可产生随机向量,用此函数产生一个值为从1 到m*n*3的行向量并返回到r中。 ➢用reshape函数将RGBS中的所有元素重置为新的矩阵并返 回到RGBSS中。 ➢用find函数找出向量r内从1到m的元素的位置并返回到向量 f。至此就可以将打乱的图像还原。