matlab数字图像加密
数字图像加密技术研究与实践

数字图像加密技术研究与实践第一章绪论1.1 研究背景随着信息技术的发展,数字图像作为一种重要的媒介形式被广泛应用于多个领域,例如医学、军事、工业等。
而数字图像的隐私性和安全性难以保障,因此数字图像加密技术越来越受到关注。
数字图像加密技术可以实现对数字图像数据进行安全加密,避免信息泄露,保护个人隐私和国家安全。
1.2 研究意义数字图像加密技术是信息安全领域中的一个重要研究方向,其在计算机网络安全、信息隐藏、多媒体安全等方面都有重要的应用价值。
本文从理论和实践两个角度展开数字图像加密技术的研究,提出了一种有效的数字图像加密方案,为数字图像的安全传输和处理提供了有力保障。
1.3 发展历程数字图像加密技术的研究可以追溯到上世纪80年代,最早的加密方案是基于传统加密算法的改进,例如DES、AES等。
然而,这些加密方案无法满足数字图像的特殊需求,后来,一些专门的数字图像加密算法被提出,在加密强度、加解密速度、安全性等方面都有了大大的改进。
第二章数字图像加密常用算法2.1 分组密码算法分组密码算法是一种将普通的明文划分为不同的分组,每个分组利用一定的加密算法进行加密的算法。
在加密过程中需要采用一定的填充模式,防止加密数据在分组时出现长度不足的情况。
常见的分组密码算法有DES、AES、Triple-DES等。
2.2 公钥密码算法公钥密码算法是一种利用两个不同的密钥进行加密解密的算法,一个用于加密数据,一个用于解密数据。
其主要特点是在加密和解密过程中使用不同的密钥,因此避免了密钥传递的安全问题。
常见的公钥密码算法有RSA、ElGamal等。
2.3 杂凑函数算法杂凑函数算法是一种将任意长度的消息经过杂凑算法处理后得到固定长度的消息摘要的算法。
消息摘要可以用于数字签名、信息验证等方面。
常见的杂凑函数算法有MD5、SHA-1、SHA-256等。
第三章数字图像加密方案3.1 加密算法设计基于前面介绍的数字图像加密常用算法,本文设计了一种混合加密算法,既包含分组密码算法,又包含公钥密码算法,保证了加密的强度。
用MATLAB实现基于混沌的图像置乱加密算法

用MATLAB实现基于混沌的图像置乱加密算法由于图像文件的加密有其自身的要求,传统的文字加密方法不适合图像文件加密。
为此,我们在混沌映射加密算法的基础上,提出了一种利用Logistic混沌序列对图像像素点置乱实现加密的算法,那么,我们今天借助MATLAB软件平台,看看基于混沌的图像置乱加密算法如何实现。
一、基于混沌的图像置乱加密算法本文提出的基于混沌的图像置乱加密算法示意图如图1所示。
加密算法如下:首先,数字图像B大小为M×N(M是图像B的行像素数,N是图像B的列像素数),将A的第j行连接到j-1行后面(j=2,3,A,M),形成长度为M×N的序列C。
其次,用Logistic混沌映射产生一个长度为的混沌序列{k1,k2,A,kM×N},并构造等差序列D:{1,2,3,A,M×N-1,M×N}。
再次,将所产生的混沌序列{k1,k2,A,kM×N}的M×N个值由小到大排序,形成有序序列{k1′,k2′,A’,kM×N’},确定序列{k1,k2,A,kM×N}中的每个ki在有序序列{k1′,k2′,A’,kM×N’}中的编号,形成置换地址集合{t1,t2,A,tM×N},其中ti为集合{1,2,A,M×N}中的一个;按置换地址集合{t1,t2,A,tM×N}对序列C进行置换,将其第i个像素置换至第ti列,i=1,2,A,M×N,得到C’。
将等差序列D做相同置换,得到D’。
最后,B’是一个M×N的矩阵,B’(i ,j)=C’((i-1)×M+j),其中i=1,2,A,M;j=i=1,2,A,N,则B’就是加密后的图像文件。
解密算法与加密算法相似,不同之处在于第3步中,以序列C’代替随机序列{k1,k2,A,kM×N},即可实现图像的解密。
数字图像加密算法的研究与实现

数字图像加密算法的研究与实现摘要数字图像加密是进行数字图像信息保密的一种手段。
随着信息技术的飞速发展,数字图像在各个领域中有着极为广泛的运用,那么数字图像中所包含的信息安全性应受到重视。
数字图像本身具有数据量较大的特点,用传统的的加密方法往往无法达到加密的要求,许多学者对数字图像的信息安全性进行了多次研究并提出了许多强而有效的算法。
本文研究并实现了一种基于混沌序列置乱的数字图像加密算法,通过密钥产生混沌序列,将该混沌序列进行逻辑排序,并以此排列方法对数字图像进行加密。
该算法隐私性较强,在数字图像的加密和解密过程中均需要密钥的参与,因此不知道密钥的用户无法恢复数字图像,具有良好的保密性。
关键词:数字图像混沌加密数据隐藏AbstractDigital image encryption algorithm is a method about keeping the information of digital image secret.With the quick development of informational technology,the digital image has been utilized in many areas,so the security of message that digital images carry should be paid attention.Particularly ,digital images have the characteristic of a large amount of data,it can not meet demands about encryption that encrypting data in traditional way,which leads to a lot of scholars have spent much time and energy on researching the security about digital image information and illustrated many effective algorithm.This article discuss and illustrate a kind of digital image encryption algorithm based on chaotic array disruption,producing chaotic array according to the key,then logically arranging existed chaotic array,finally encrypt digital image with same logic.It shows better privacy.This process requires keys participating in both encryption and deciphering,so anyone does not know the key who can not rebuild the original image.Key words:digital image chaotic encryption hiding data目录摘要 (I)Abstract (II)绪论 (1)1数字图像加密的基础理论 (4)1.1密码学的介绍 (4)1.2 图像加密技术 (4)1.3数字图像的置乱 (5)1.4混沌加密简介 (5)1.5混沌加密安全性分析 (6)2开发工具简介 (8)3基于混沌的数字图像加密算法 (11)3.1数字图像混沌加密算法总体设计 (11)3.2 数字图像混沌加密算法 (11)3.3数字图像混沌解密算法 (13)4实验仿真与结果 (14)4.1编程实现相关函数及其方法 (14)4.2仿真结果 (14)4.2.1非彩色图像实验仿真 (14)4.2.2彩色图像实验仿真 (16)结论 (18)附录1混沌加密与混沌解密算法代码 (19)绪论计算机和网络的飞速发展为多媒体数字产品的使用、传播提供了极其便利的途径,然而由于数字产品具有极易被复制和修改的特性,使得数字作品的信息安全问题和版权保护成为迫切需要解决的难题。
(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理实验一图像的点运算实验1.1 直方图一.实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.理解和掌握直方图原理和方法;二.实验设备1.PC机一台;2.软件matlab。
三.程序设计在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察图像matlab环境下的直方图分布。
(a)原始图像 (b)原始图像直方图六.实验报告要求1、给出实验原理过程及实现代码;2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。
实验1.2 灰度均衡一.实验目的1.熟悉matlab图像处理工具箱中灰度均衡函数的使用;2.理解和掌握灰度均衡原理和实现方法;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像subplot(2,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(2,2,3),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题a=histeq(I,256); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
利用Matlab进行数据加密和信息安全的技术实现

利用Matlab进行数据加密和信息安全的技术实现概述:信息安全在当今数字化时代变得尤为重要。
随着数据量的不断增长和传输方式的多样化,保护数据安全成为了一项紧迫的任务。
数据加密是信息安全的基础,有效地使用Matlab进行数据加密和信息安全技术的实现成为了许多研究者和工程师的不懈追求。
本文将深入探讨利用Matlab实现数据加密和信息安全的技术。
一、数据加密基础1.1 什么是数据加密数据加密是一种将明文转化为密文的过程,通过使用一定的算法和密钥来隐藏数据的真实含义以保证其保密性。
1.2 数据加密的目的数据加密的主要目的是确保数据的完整性、保密性和可靠性,以防止未经授权的访问和数据泄露。
1.3 传统加密算法常用的对称加密算法包括DES、AES等,而常用的非对称加密算法则有RSA、DSA等。
二、Matlab在数据加密中的应用2.1 数据加密函数Matlab提供了一系列用于数据加密的函数,例如randi、bitxor等。
使用这些函数,我们可以自由地实现各种加密算法。
2.2 对称加密算法的实现DES是一种常见的对称加密算法,它可以通过Matlab实现。
我们可以使用Matlab提供的位运算函数bitxor来实现DES算法中的异或操作,还可以利用bitshift函数进行左移和右移操作。
2.3 非对称加密算法的实现RSA是一种常见的非对称加密算法,可以通过Matlab进行实现。
Matlab提供了大整数运算的函数,可以方便地实现RSA算法中的大整数加法、大整数乘法等操作。
此外,利用Matlab的控制语句,我们可以实现RSA算法中的循环、选择等结构。
三、信息安全的其他技术3.1 数字签名技术数字签名技术是一种确保数据完整性和真实性的方法。
Matlab提供了哈希函数来实现数字签名的生成和验证。
3.2 数据压缩和加密的结合数据压缩可以大幅减小数据的体积,方便传输和存储。
Matlab提供了用于压缩的函数,例如zlib、gzip等。
在Matlab中使用图像加密和解密技术

在Matlab中使用图像加密和解密技术图像加密和解密技术是保护图像信息安全的重要手段之一。
在信息时代,随着图像的广泛应用,图像加密和解密技术的需求也日益增加。
Matlab作为一种常用的科学计算软件,提供了丰富的工具和函数,使得图像加密和解密变得更加便捷和高效。
一、图像加密技术的基本原理图像加密技术通过对图像进行转换和混淆操作,使得原始图像的信息变得不可读取,达到保护图像信息安全的目的。
常见的图像加密技术包括置乱、替换、混淆等方法。
1.置乱方法:通过对图像的像素点进行置换操作,改变像素点的位置,使得原始图像的信息难以被还原。
常见的置乱方法有置乱矩阵法、置乱像素法等。
2.替换方法:通过对图像的像素点进行替换操作,改变像素点的值,使得原始图像的信息无法被识别。
常见的替换方法有置乱像素法、置乱位值法等。
3.混淆方法:通过对图像的像素点进行逻辑运算、异或运算等操作,改变像素点的值,使得原始图像的信息无法被解读。
常见的混淆方法有异或混淆法、逻辑运算混淆法等。
二、图像加密的Matlab实现在Matlab中,图像加密和解密的实现通常可以借助于图像处理工具箱和编程语言的支持。
下面以置乱方法为例,介绍如何在Matlab中实现图像加密。
1.图像置乱:首先,需要读取待加密的图像文件,并将其转换为Matlab支持的矩阵格式。
可以使用imread函数读取图像文件,得到灰度图像矩阵。
然后,使用randperm函数生成一个随机的置乱矩阵,该矩阵用于置乱图像的像素点位置。
可以使用reshape函数将矩阵转换为一维数组,再将图像矩阵按照置乱矩阵进行置乱操作。
最后,使用imwrite函数将置乱后的图像矩阵写入新的图像文件中,完成图像置乱操作。
2.图像解密:与图像加密相反,图像解密需要使用与加密相对应的逆操作。
在这里,我们需要使用与置乱相反的矩阵,将置乱后的图像还原为原始图像。
首先,读取已经加密的图像文件,并将其转换为Matlab支持的矩阵格式。
使用MATLAB进行数据加密和解密
使用MATLAB进行数据加密和解密数据加密和解密是当今信息安全领域中非常重要的问题。
加密算法的设计和实现是确保数据在传输和存储过程中不被未经授权的人访问的一种关键手段。
在本文中,我们将探讨如何使用MATLAB进行数据加密和解密,并介绍一些常用的加密算法和技术。
一、数据加密的基本原理数据加密是通过将原始数据转化为不易被理解的形式,从而防止未经授权的人获取敏感信息。
加密过程主要包括两部分:加密算法和密钥。
加密算法是对原始数据进行数学计算和转换的一种方法。
常见的加密算法有对称加密算法和非对称加密算法。
对称加密算法使用相同的密钥进行加密和解密,加密和解密过程非常高效。
其中,最常用的对称加密算法是AES(Advanced Encryption Standard)算法。
AES算法在MATLAB中有相应的函数可供使用。
非对称加密算法使用两个密钥:公钥和私钥。
公钥用于加密数据,私钥用于解密数据。
公钥可以公开,而私钥需要保密。
RSA算法是一种常见的非对称加密算法,也可以在MATLAB中使用相应的函数实现。
密钥是在加密和解密过程中起到关键作用的参数。
密钥的选择和管理直接影响到加密算法的安全性。
为了确保数据的安全性,密钥应该是足够长的随机数。
同时,密钥的保管也是一个重要的问题,只有授权的人能够访问密钥。
二、使用MATLAB进行数据加密在MATLAB中,我们可以利用现有的加密算法和函数来对数据进行加密。
接下来,我们将使用AES算法来进行示范。
首先,需要准备一个密钥。
在MATLAB中,我们可以通过randi函数生成一个随机的密钥。
例如:```MATLABkey = randi([0 255], 1, 16);```生成了一个16字节长的随机密钥。
然后,我们可以使用AES算法对数据进行加密。
在MATLAB中,通过函数aesencrypt可以实现AES加密。
例如,假设我们要加密一个文本文件:```MATLABplaintext = fileread('plaintext.txt');ciphertext = aesencrypt(plaintext, key);```上述代码将plaintext.txt文件中的内容进行AES加密,并将加密后的结果存储在变量ciphertext中。
(绝对可运行)加密图像中的可逆数据隐藏算法matlab代码(基于张新鹏教授的算法)
%This is the program of Reversible Data Hiding in Encrypted Domain clc;clear;%===============Read image===========================original_p=rgb2gray(imread('LENA.tif'));[m,n]=size(original_p);%==============Image encryption====================== random_bits=rand(m,n*8)<=0.5;%伪随机序列for i=1:mfor j=1:ns=0;for k=0:7b(k+1)=mod(fix(double(origi nal_p(i,j))/(2Ak)),2);eb(k+1)=xor(b(k+1),random_bits(i,8*j+k-7)); s=s+eb(k+1)*(2A k);endencrypted_image(i,j)=s;endendfigure(1);subplot(1,2,1);imshow(original_p);hold on;title('Original image','fontsize',16);subplot(1,2,2);encrypted_image=uint8(encrypted_image);imshow(encrypted_image);title('Encrypted image','fontsize',16);%================Data embedding======================size=8; %分块大小N=6;%置乱周期number1=3;number2=N-number1;lim_row=fix(m/size); %图像的分块数lim_col=fix(n/size); %图像的分块数bitts=3;watermessage=rand(lim_row,lim_col)<0.5; %水印信息pseudo_randomly for i=1:lim_rowfor j=1:lim_col block_image{i,j}=encrypted_image((size*i-size+1):size*i,(size*j-size+1):size*j); % 分块for k=1:sizefor t=1:sizeindex=arnold(k,t,size,number1);%arnold is permutateion function;arno_block_image{i,j}(index(1)+1,index(2)+1)=block_image{i,j}(k,t); end end%数据嵌入sum0=zeros(size/2,size); if watermessage(i,j)==0 for k=0:7bbb{k+1}=mod(fix(double(arno_block_image{i,j}(1:size/ 2,:))/(2你)),2);if k<bitts bbb{k+1}=~bbb{k+1};endsum0=sum0+bbb{k+1}*(2A k);enddata_image{i,j}=[sum0;double(arno_block_image{i,j}(size/ 2+1:size,:))];endsum1=zeros(size/2,size);if watermessage(i,j)==1for k=0:7 bbb{k+1}=mod(fix(double(arno_block_image{i,j}(size/ 2+1:size,:))/(2Ak)),2);if k<bittsbbb{k+1}=~bbb{k+1};endsum1=sum1+bbb{k+1}*(2Ak);enddata_image{i,j}=[double(arno_block_image{i,j}(1:size/ 2,:));sum1];endfor k=1:sizefor t=1:size index=arnold(k,t,size,number2);%arnold is permutateion function;re_data_image{i,j}(index(1)+1,index(2)+1)=data_image{i,j}(k,t);endend%合成嵌入数据后的图像data_en_image((size*i-size+1):size*i,(size*j-size+1):size*j)=re_data_image{i,j};endend%=====Encrypt image which contains data====for i=1:lim_row*sizefor j=1:lim_col*sizes=0;for k=0:7b(k+1)=mod(fix(data_en_image(i,j)/(2Ak)),2);eb(k+1)=xor(b(k+1),random_bits(i,8*j+k-7));s=s+eb(k+1)*(2A k);endde_data_image(i,j)=s;endendfigure(2);hold on;subplot(1,2,1);imshow(original_p);title('Original image','fontsize',16);subplot(1,2,2);imshow(uint8(de_data_image));title('Decrypted image contains data','fontsize',16);%直接解密图像的峰值信噪比sumsss=0;for i=1:lim_row*sizefor j=1:lim_col*size sumsss=(de_data_image(i,j)-double(original_p(i,j)))A2+sumsss;endendmse=sumsss/((lim_row*size)*(lim_row*size));psnr=10*log10(255A2 /mse);%======Extract data and recover image=======for i=1:lim_rowfor j=1:lim_col block_de_image{i,j}=de_data_image((size*i-size+1):size*i,(size*j-size+1):size*j);%分块for k=1:sizefor t=1:size index=arnold(k,t,size,number1);%arnold is permutateion function;ar_block_de_image{i,j}(index(1)+1,index(2)+1)=block_de_image{i,j}(k,t);endendsum0=zeros(size/2,size);sum1=zeros(size/2,size);for k=0:7bbbO{k+1}=mod(fix(ar_block_de_image{i,j}(1:size/ 2,:)/(2你)),2);bbb1{k+1}=mod(fix(ar_block_de_image{i,j}(size/ 2+1:size,:)/(2A k)),2);if k<bittsbbb0{k+1}=~bbb0{k+1};bbb1{k+1}=~bbb1{k+1};endsum0=sum0+bbb0{k+1}*(2Ak);sum1=sum1+bbb1{k+1}*(2Ak);endar_H0_image{i,j}=[sum0;ar_block_de_image{i,j}(size/ 2+1:size,:)];ar_H1_image{i,j}=[ar_block_de_image{i,j}(1:size/ 2,:);sum1];for k=1:sizefor t=1:size index=arnold(k,t,size,number2);%arnold is permutateion function;H0_image{i,j}(index(1)+1,index(2)+1)=ar_H0_image{i,j}(k,t);H1_image{i,j}(index(1)+1,index(2)+1)=ar_H1_image{i,j}(k,t);endendf0=0;f1=0;for u=2:size-1for v=2:size-1f0=f0+abs(H0_image{i,j}(u,v)-(H0_image{i,j}(u-1,v)+H0_image{i,j}(u,v-1)+H0_image{i,j}(u+1,v)+H0_image{i,j}(u,v+1))/4);f1=f1+abs(H1_image{i,j}(u,v)-(H1_image{i,j}(u-1,v)+H1_image{i,j}(u,v-1)+H1_image{i,j}(u+1,v)+H1_image{i,j}(u,v+1))/4);endendif (f0-f1)<0extract_bits(i,j)=0; recover_image(size*i-size+1:size*i,size*j-size+1:size*j)=H0_image{i,j};elseextract_bits(i,j)=1; recover_image(size*i-size+1:size*i,size*j-size+1:size*j)=H1_image{i,j};endendendfigure(3);subplot(1,2,1);imshow(original_p);hold on;title('Original image','fontsize',16); subplot(1,2,2);recover_image=uint8(recover_image); imshow(recover_image);hold on; title('Recovered image','fontsize',16);%==============analysis============ diff=original_p(1:lim_row*size,1:lim_col*size)-recover_image;counts=0;for i=1:lim_rowfor j=1:lim_col block_diff{i,j}=diff((size*i-size+1):size*i,(size*j-size+1):size*j); %分块if extract_bits(i,j)~=watermessage(i,j) block_diff{i,j}=ones(size,size)*255;counts=counts+1;else block_diff{i,j}=original_p((size*i-size+1):size*i,(size*j-size+1):size*j);end diff_image((size*i-size+1):size*i,(size*j-size+1):size*j)=block_diff{i,j};endend figure(4); imshow(diff_image); hold on;%title('Blocks of incorrect','fontsize',16); %错误率与分块大小的关系rate=counts/((lim_row)*(lim_col))。
AES加密算法在图像加密上的应用及MATLAB实现
AES加密算法在图像加密上的应用及MATLAB实现作者:高瑞杨立波来源:《科技创新导报》 2014年第14期高瑞杨立波(长春理工大学电子信息工程学院吉林长春 130022)摘要:当今社会,数字图像加密技术的发展备受关注,该文提出了一种结合Logistic混沌映射理论的AES图像加密算法,使得数字图像在传输过程中得到有效的保护。
关键词:图像加密 AES Logistic 混沌映射 MATLAB中图分类号:TP309 文献标识码:A 文章编号:1674-098X(2014)05(b)-0048-02随着互联网的发展,数字图像通信成为了信息传输的重要途径。
与此同时,数字图像通信的安全引起了人们的广泛重视。
将AES算法和混沌序列相结合来实现数字图像加密的方法,既保证了加密的安全性,也缩短了加密的时间。
1 AES介绍AES是Advanced Encryption Standard(高级加密标准)的简称,是美国联邦政府采用的一种区块加密标准。
AES具有可变的分组长度和密钥长度,而且分组长度和密钥长度是不相关的。
分组长度有三种情况:128位、192位和256位。
AES加密过程包含4个步骤:(1)轮密匙加变换(2)字节替换(3)行移位(4)列混合。
2 Logistic映射Logistic映射有两种定义形式:第一种形式如式(1)所示。
已有研究证明当时,映射为混沌。
此时的迭代的序列是具有对初值敏感、非周期、扩散的特性。
第二种形式如式(2)所示:其中,为分岔参数,从开始,混沌系统进入分岔倍周期,当参数逐渐增大到时,系统呈现混沌特性,上述过程就是倍周期通向混沌。
由于Logistic映射产生的混沌序列对初值的敏感性等特点,这些特性被广泛应用于很多混沌图像加密的算法中。
3 基于AES的图像加密算法在利用AES算法对图像进行加密的过程中,第一步即将灰度图像进行轮密匙加变换,就是将轮密匙与原图像矩阵中相对应的字节作异或运算,以得到初步密文。
毕业论文—基于Matlab的光学图像加密解密技术
本科毕业论文题目:基于Matlab的光学图像加密解密技术院(部):理学院专业:光信息科学与技术班级:光信122姓名:韩硕学号:20121212082指导教师:王惠临完成日期:2016年6月4日目录摘要 (IV)ABSTRACT (V)1前言 (1)1.1 选题背景及意义 (1)1.2 Matlab软件介绍 (1)1.3 Matlab的主要特点 (2)1.4 本文结构安排 (3)2基于Matlab进行图形图像处理基础 (4)2.1 Matlab中图形图像的分类 (4)2.1.1 索引图像 (4)2.1.2 灰度图像 (4)2.1.3 RGB图像 (4)2.1.4 二值图像 (4)2.2 Matlab常用的图形图像处理函数(命令) (4)3图形图像的加密解密技术 (6)3.1 图形图像加密传输理论框图以及图形图像加密特点 (6)3.2 置乱加密技术 (7)3.2.1 随机打乱各层的行或列 (7)3.2.2 像素点随机打乱 (12)3.2.3 像素点RGB值的放大 (14)3.2.4 灰度变换置乱 (16)3.3 基于混沌的图像加密解密技术 (17)3.3.1 混沌加密原理 (17)3.3.2 用Matlab的实现基于混沌的图像置乱加密算法 (18)3.4 基于秘密分割加密解密技术 (20)3.4.1 秘密分割加密算法的原理 (20)3.4.2秘密分割加密算法的Matlab实现 (20)4结论 (24)4.1 总结 (24)4.2 展望 (24)谢辞 (26)参考文献 (27)摘要社会在进步,时代在发展,计算机技术在飞速发展,互联网技术也在日益进步,各种迹象都表明着我们已经进入了一个信息大爆炸的时代。
人们每天通过互联网获取大量的数字图像的信息,然而在信息的传送中,未经加密的原始的数据非常容易遭受非法途径的截取并被恶意更改。
因此,互联网时代如何确保图像信息安全传送越来越受到人们的重视。
基于此,也提出了不少图形加密解密的算法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB数字图像加密
一、实验名称
MATLAB数字图像加密
二、实验目的
熟悉MATLAB编译环境;
掌握基本的矩阵操作;
了解初级的加密算法。
三、实验环境
WindowsXP操作系统,MATLABR2010a编译环境
四、实验原理
将数字图像划分成块,对RGB矩阵进行转置、水平翻转、垂直翻转等变换,形成新的矩阵,实现对图像的加密。
五、实验过程
1.获取数字图像存入矩阵;
2.获取矩阵大小存入变量;
3.将矩阵划分成等大的4*4子矩阵;
4.分别对存储图像RGB信息的矩阵进行转置、水平翻转、垂直翻转等变换;
5.再次细化矩阵,将矩阵划分成等大的16*16子矩阵;
6.分别对存储图像RGB信息的矩阵进行转置、水平翻转、垂直翻转等变换;
7.加密完成,存储加密后的图像;
8.逆推过程,完成解密,存储解密后的图像。
六、源程序
a=imread('C:\Documents and Settings\Owner\×ÀÃæ\jm\jmtp.jpg');
subplot(2,2,1);
imshow(a);
[l,m,n]=size(a);
x=l/4;
y=m/4;
for i=0:3
for j=0:3
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),1)=a((j*x+1):((j+1)*x),(i*y+1):
((i+1)*y),1)';
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),2)=flipud(a((j*x+1):((j+1)*x),( i*y+1):((i+1)*y),2));
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),3)=fliplr(a((j*x+1):((j+1)*x),( i*y+1):((i+1)*y),3));
end
end
subplot(2,2,3);
imshow(a);
x=l/16;
y=m/16;
a(:,:,1)=flipud(a(:,:,1));
a(:,:,2)=fliplr(a(:,:,2));
a(:,:,3)=a(:,:,3)';
for i=0:15
for j=0:15
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),1)=a((j*x+1):((j+1)*x),(i*y+1): ((i+1)*y),1)';
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),2)=flipud(a((j*x+1):((j+1)*x),( i*y+1):((i+1)*y),2));
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),3)=fliplr(a((j*x+1):((j+1)*x),( i*y+1):((i+1)*y),3));
end
end
subplot(2,2,2);
imshow(a);
imwrite(a,'jiamihou.jpg');
for i=0:15
for j=0:15
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),1)=a((j*x+1):((j+1)*x),(i*y+1): ((i+1)*y),1)';
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),2)=flipud(a((j*x+1):((j+1)*x),( i*y+1):((i+1)*y),2));
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),3)=fliplr(a((j*x+1):((j+1)*x),( i*y+1):((i+1)*y),3));
end
end
a(:,:,1)=flipud(a(:,:,1));
a(:,:,2)=fliplr(a(:,:,2));
a(:,:,3)=a(:,:,3)';
x=l/4;
y=m/4;
for i=0:3
for j=0:3
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),1)=a((j*x+1):((j+1)*x),(i*y+1): ((i+1)*y),1)';
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),2)=flipud(a((j*x+1):((j+1)*x),( i*y+1):((i+1)*y),2));
a((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),3)=fliplr(a((j*x+1):((j+1)*x),( i*y+1):((i+1)*y),3));
end
end
subplot(2,2,4);
imshow(a);
imwrite(a,'jiemihou.jpg');
七、实验结果
原图片
加密后的图片解密后的图片
八、实验分析
优点:该加密算法原理简单,编程易实现,加密效果较好。
缺点:解密过程简便,易破解。