图像加密解密基于matlab GUI混沌序列图像加密解密(含相关性检验)含Matlab源码 1862期
Posted 海神之光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像加密解密基于matlab GUI混沌序列图像加密解密(含相关性检验)含Matlab源码 1862期相关的知识,希望对你有一定的参考价值。
一、混沌图像加密与解密简介
1 引言
混沌系统是一种高度复杂的非线性动态系统,具有对初始条件非常敏感的特性,由它产生的混沌序列具有随机特性。因此,常把混沌应用用于信息加密中。随着现代通信技术和网络技术的发展,尤其是电子商务的兴起,对信息加密提出了更高的要求。特别是对图像、声音等信息的加密尤为重要。
目前,对图像的加密还是基于传统的数据加密方式,没有利用图像本身的数据特性,因而存在一定的局限性。
本论文中提出的混沌序列生成方式形成新的混沌映射,该混沌映射比提出的混沌映射复杂度更高,而且生成整数值混沌序列仍然具有混沌特性。然后用生成的混沌序列直接加密图像,既改变像素的灰度也改变像素的位置,易实现、计算花费少,加密的实验结果表明其保密性很好,加密后的图像可以完全正确地还原成原始图像。
2 混沌影射
提出了一个具有良好随机统计特性的一维非线形混沌影射,由它生成的混沌序列为某一区域上的整数值混沌序列,具有随机性,且对初值极其敏感。其定义如下:
其中xk∈1,2,…,m,参数a∈1,2,…,m,([z],[z]分别表示不大于z的最大整数和不小于z的最小整数。
混沌影射(1)经过n次迭代后形成新混沌影射(2),如下所示,即为本文要运用的影射,同样具有上述混沌影射(1)的混沌特性,记为:
当给定初始值x0,参数a,m的值和迭代次数n的值就确定了由混沌系统(2)生成混沌序列:xk;k=0,1,2,3…。该序列具有混沌特性,对初值条件x0极为敏感。本文把参数a与n也作为初始条件,即把有序数组(x0,a,n)一起作为密钥,则攻击混沌系统(2)成功的概率比只把xo作为密钥时攻击成功的概率更小。
举例说明混沌影射(2)生成混沌序列的具体过程。例如:产生[1,371]的一个整数混沌序列,取参数m=371,a=205,下表为混沌序列产生过程,表第一行为迭代次数n,第一列为xk,表中为对应某一xk,n的xk+1:
表1
3 图像加密解密算法
本文用混沌系统(2)生成的混沌序列加密图像,既改变图像像素的位置,同时也改变图像像素的灰度值,该算法简洁、易实现。
3.1 加、解密算法设计
设原始图像为IR,用(i,j,g(i,j))表示这一张图像,(i,j)为某一像素标值,g(i,j)表示该像素的灰度值,这一张图像的大小为M×N个像素。其中0≤i≤M-1,0≤j≤N-1,L为该图像的灰度水平。
3.1.1 加密算法设计
Step 1:输入M,N,原始图像IR=(i,j,g(i,j))。
Step 2:输入一维混沌影射(2)的初始值x0,设置参数a,m的值和迭代次数n的值,用混沌影射(2)生成混沌序列:x0,x1,x2,…,xM+N-1。
Step 3:
利用第二步生成的混沌序列将图像的每行像素右移(循环移动)变换到该行的另一位置,像素的灰度值不改变。变换得到的图像为:(i,j,g1(i,j))。
Step4:
这一步在第三步得到的变换结果(i,j,g1(i,j))的基础上,利用第二步生成的混沌序列将图像的每列像素向下移动(循环移动)变换到该列的另一位置,像素的灰度值不改变。变换得到的图像为:(i,j,g2(i,j))。
Step 6:将第四步得到的结果(i,j,g2(i,j))的每一像素的灰度值改变。
得到加密图像的各个像素的新的灰度值g’(i,j),生成加密图像IE=(i=(i,j,g’(i,j))。
Step 7:终止算法。
3.1.2 解密算法设计
Step1:输入M,N以及加密图像IE。
Step3:
这一步是加密过程的第六步的逆过程,利用第二步生成的混沌序列将加密图像的每一像素的灰度值改变,还原成原来的相应灰度值。得到结果为:(i,j,g2(i,j))。
Step4:输入一维混沌影射(2)的初始值x0,设置参数a,m的值和迭代次数n的值,用混沌影射(2)生成混沌序列:x0,x1,x2,…,xM+N-1。这一步是加密过程的第二步的一致。
Step 5:
这一步是加密过程的第四步的逆过程,将图像(i,j,g2(i,j)的每列像素向上移动(循环移动)变换到该列的另一位置,像素的灰度值不改变。得到的结果为:(i,j,g1,(i,j))。
Step 6:
这一步是加密过程的第三步的逆过程,将图像(i,j,g2(i,j))的每列像素向下左移动(循环移动)变换到该列的另一位置,像素的灰度值不改变。得到的结果为:(i,j,g(i,j))。
得到解密图像的各个像素的新的灰度值,生成解密加密图像ID=(i,j,g(i,j))=IR。还原图像。
Step 7:终止算法。
3.2 加密解密结构图
二、部分源代码
function varargout = main(varargin)
% MAIN M-file for main.fig
% MAIN, by itself, creates a new MAIN or raises the existing
% singleton*.
%
% H = MAIN returns the handle to a new MAIN or the handle to
% the existing singleton*.
%
% MAIN('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MAIN.M with the given input arguments.
%
% MAIN('Property','Value',...) creates a new MAIN or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before main_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to main_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help main
% Last Modified by GUIDE v2.5 27-May-2022 12:16:37
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @main_OpeningFcn, ...
'gui_OutputFcn', @main_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin & isstr(varargin1)
gui_State.gui_Callback = str2func(varargin1);
end
if nargout
[varargout1:nargout] = gui_mainfcn(gui_State, varargin:);
else
gui_mainfcn(gui_State, varargin:);
end
% End initialization code - DO NOT EDIT
% --- Executes just before main is made visible.
function main_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to main (see VARARGIN)
% Choose default command line output for main
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes main wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = main_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout1 = handles.output;
% --- Executes on mouse press over axes background.
function axes1_ButtonDownFcn(hObject, eventdata, handles)
% hObject handle to axes1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]陈永红,黄席樾.基于混沌序列的图像加密解密算法[J].计算机科学. 2003,(12)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
以上是关于图像加密解密基于matlab GUI混沌序列图像加密解密(含相关性检验)含Matlab源码 1862期的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB教程案例98基于混沌序列的图像加解密matlab仿真,并进行各类攻击测试
图像加密基于matlab GUI混沌系统图像加密解密含Matlab源码 1240期
基于Arnold置乱的数字水印图像加密算法的设计,基于Matlab语言编程,完成Arnold置乱算法,并用Matlab GUI工