200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【图像加密】基于matlab GUI正交拉丁方置乱算法图像加解密【含Matlab源码 182期】

【图像加密】基于matlab GUI正交拉丁方置乱算法图像加解密【含Matlab源码 182期】

时间:2022-02-03 15:24:51

相关推荐

【图像加密】基于matlab GUI正交拉丁方置乱算法图像加解密【含Matlab源码 182期】

⛄一、正交拉丁方置乱简介

0 引言

随着通讯技术的飞速发展, 越来越多的领域需要传送数字图像信号, 因此信息的传送安全问题显得越来越重要。通常应用于数字图像通信的两种保护技术为:数字水印技术和图像加密技术。前一种保护技术因不改变图像的可见性而不适合用于保密图像的传送。后一种技术通过加密操作, 改变图像的可见性, 使原来的图像成为不可辨别的, 而只能通过相应的解密算法得到原始图像。随着通讯技术的发展, 图像加密技术因其具有良好的保密性而得到越来越广泛的应用。

在加密算法中需要一个随机序列发生器。由于离散的混沌系统容易实现, 同时混沌系统对参数和初始条件极其敏感, 把其作为密钥, 则系统具有优良的密码特性, 同时它在二维相平面内的不规则性使其更适用于图像加密。

本文应用离散混沌动力系统, 针对图像数据的存储特点, 设计了一种图像加密算法。所有的密钥都由离散混沌映射产生, 因此算法没有因为增加密钥设置而影响加密/解密的效率和速度。由于利用了混沌映射, 增加了破译难度, 提高了安全性, 仿真结果表明该算法能够有效地实现对数字图像数的加密/解密。

1 正交拉丁方置乱

1.1 基本概念

定义1由元素1, 2, 3,…,n构成一个n×n的方阵(aij) n×n,使得每行每列中各元素恰好只出现一次,这样的方阵叫做n阶拉丁方。

定义2设A=(aij) n×n, B= (bij) n×n是两个n×n的拉丁方,若方阵( (aij, bij) )n×n中的n2个偶对(aij, bij)互不相同,i, j=1, 2,…,n,则称A与B为互相正交拉丁方,或称A与B为n阶正交拉丁方。

则由A、B构成3×3的偶对方阵

其中没有相同的元素,故A与B是三阶正交拉丁方。

1.2 相关定理

定理1互相正交的n阶拉丁方的个数不超过n-1个,即若A1, A2,…,Ak是两两正交的n阶拉丁方,则k≤n-1。

定理2设n≥3且n=pα,p为一个素数,α是一个正整数,则存在n-1个正交的n阶拉丁方A1, A2,…,An-1,且设

定理3若A1, A2,…,Am为两两正交的拉丁方组,且设

1.3 基于正交拉丁方的数字图像置乱

图像置乱起源于密码学早期所使用的一些密码算法,功能是将图像中像素的位置重新排列,将原始图像变换成一个杂乱无章的新图像,要恢复原始图像必须保证原始图像与变换图像之间的变换是1-1映射(双射),而正交拉丁方正好具备该性质。具体方法是:

由定理3知,对于3维空间中的图像,利用正交拉丁方同样能达到数字图像置乱的目的,由于正交拉丁方组中含有n-1个互相正交的拉丁方,故这种图像置乱方法有n (n-1) 种。而对于三维图像则有n (n-1) (n-2) 种。

1.4 新的图像加密算法

文中提出的算法其主要思想是:根据Logistic映射,利用密钥x0, μ产生混沌序列xk,由xk生成灰度置乱矩阵G*,利用矩阵G*对原图像加密后再对其应用基于正交拉丁方的置乱,完成对图像的双重加密。完整的置乱和复原算法如图1所示。

算法采用异或运算对像素值进行改变是因为异或运算在数学上可逆,可实现算法的逆操作。步骤如下:

(1)根据Logistic映射,利用密钥μ, x0。生成一组混沌序列xk, 从xr (r>0) 开始取M×N个元素构成M×N的矩阵B, B (i, j) ∈[0, 1]。将B (i, j) 按式 (7) 变换生成加密矩阵C, C (i, j) ∈[0, 255]。

(2)原始图像矩阵为A,把A中每个像素的像素值 (i, j) 与C (i, j) 作异或运算,得到一级加密图像M。

(3)对图像M进行正交拉丁方置乱变换,得到最终加密图像I*。解密过程刚好是加密隐藏的逆过程。

(4)对图像I*进行正交拉丁方逆变换, 得到图像M。

(5)根据一维Logistic函数、参数及初始值,得到一维随机序列,形成加密矩阵C。

(6)加密矩阵C与图像M作异或运算,得到原始图像矩阵A。

图1 加密算法模型

⛄二、部分代码

function varargout = ladingfang(varargin)

% LADINGFANG M-file for ladingfang.fig

% LADINGFANG, by itself, creates a new LADINGFANG or raises the existing

% singleton*.

%

% H = LADINGFANG returns the handle to a new LADINGFANG or the handle to

% the existing singleton*.

%

% LADINGFANG(‘CALLBACK’,hObject,eventData,handles,…) calls the local

% function named CALLBACK in LADINGFANG.M with the given input arguments.

%

% LADINGFANG(‘Property’,‘Value’,…) creates a new LADINGFANG or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before ladingfang_OpeningFunction gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to ladingfang_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 ladingfang

% Last Modified by GUIDE v2.5 05-Jan- 22:18:40

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct(‘gui_Name’, mfilename, …

‘gui_Singleton’, gui_Singleton, …

‘gui_OpeningFcn’, @ladingfang_OpeningFcn, …

‘gui_OutputFcn’, @ladingfang_OutputFcn, …

‘gui_LayoutFcn’, [] , …

‘gui_Callback’, []);

if nargin & isstr(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

⛄三、运行结果

⛄四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1]崔基哲,张波,Jong Weon KIM.一种图像置乱算法及在数字电视中的应用研究[J].电视技术. ,35(20)

3 备注

简介此部分摘自互联网,仅供参考,若侵权,联系删除

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。