基于MATLAB的混沌序列图像加密程序

  • 设计目的

图像信息生动形象,它已成为人类表达信息的重要手段之一,网络上的图像数据很多是要求发送方和接受都要进行加密通信,信息的安全与保密显得尤为重要,因此我想运用异或运算将数据进行隐藏,连续使用同一数据对图像数据两次异或运算图像的数据不发生改变,利用这一特性对图像信息进行加密保护。

熟练使用matlab运用matlab进行编程,使用matlab语言进行数据的隐藏加密,确保数字图像信息的安全,混沌序列具有容易生成,对初始条件和混沌参数敏感等特点,近年来在图像加密领域得到了广泛的应用。使用必要的算法将信息进行加解密,实现信息的保护。

  • 设计内容和要求

   使用混沌序列图像加密技术对图像进行处理使加密后的图像

   使用matlab将图像信息隐藏,实现信息加密。

  • 设计思路

1.基于混沌的图像置乱加密算法

本文提出的基于混沌的图像置乱加密算法示意图如图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},即可实现图像的解密。

2.用MATLAB的实现基于混沌的图像置乱加密算法

本文借助MATLAB软件平台,使用MATLAB提供的文本编辑器进行编程实现加密功能。根据前面加密的思路,把加密算法的编程分为三个主要模块:首先,构造一个与原图a等高等宽的矩阵b加在图像矩阵a后面形成复合矩阵c:

b=zeros(m1,n1);

ifm1>=n1

ifm1>n1

fore=1:n1

b=(e,e);

end

……

else

fore=1:n1

end

fore=1:(n1-m1)

b((m1+e-1),e)=m1+e-1

end

end

c=zeros(m1*2,n1);

c=zeros(m1*2,1);

c=[b,a];

然后,用Logitic映射产生混沌序列:

……

forn=1:n1+100x(n+1)=q*x(n)*(1-x(n));

endn=101:1:n1+100;

y(n-100)=x(n);

……

最后,采用冒泡法将产生的混沌序列值由小到大进行排序,并利用同样的换序条理依次对复合矩阵的列和行进行打乱排序:

forf=1:n1-1forh=f:n1ify(f)>y(h)k=y(f);

y(f)=y(h);

y(h)=k;

c1=c(:,f);

c(:,f)=c(:,h);

c(:,h)=c1;

end

……

forh=g:m1

if y(f>y<h)

k=y(f)

y(f)=y(h)

y(h)=k;

d1=d(:,f);

d(:,f)=d(:,h);

d(:h)=d;

end

……

解密的程序与加密的相反。

3.基于混沌的图像置乱加密算法效果分析

利用Logistic混沌序列对图像像素点置乱对图像文件加密,其效果要比用Logistic混沌序列直接对图像文件加密好,令x0=0.3001,图2(b)为用Logistic混沌序列直接对图像文件爱你进行加密的图像,图2(c)为用Logistic混沌序列对图像像素点置乱对图像文件进行加密的图像,图2(d)为其的解密图像文件。

4.设计原理

    运用异或运算将数据进行隐藏,连续使用同一数据对图像数据两次异或运算图像的数据不发生改变,利用这一特性对图像信息进行加密保护。用户输入的密码必须在0~1之间任何一个数据进行加密,并且加密的程序与解密的程序输入的密码必须一致才能正确解密。

  • 源程序

%该程序针对图像近似系数和高频系数进行加密,以达到加密的效果

clear all;

t0 = clock;              %测试程序运行时间

im=imread('tank.jpg');

im1=rgb2gray(im);       %图像灰度化

im1=medfilt2(im1,[3 3]);  %图像平滑处理

figure;

imshow(im1);

title('灰度化处理');

im1=double(im1);

%小波变换,获取图像的低频高频系数

[ca1,ch1,cv1,cd1]=dwt2(im1,'bior3.7');

figure(3);

subplot(231);

imshow(ca1,[]);

title('图像近似');

subplot(232);

imshow(ch1);

title('低频水平分量');

subplot(233);

imshow(cv1);

title('低频垂直分量');

subplot(234);

imshow(cd1),;

title('高频分量');

%%%%%%以下为混沌加密算法%%%%%%

[M,N]=size(ca1);

e=hundungen(M,N,0.1);

tt=0.1;

fca1=mod(tt*ca1+(1-tt)*e,256);

subplot(235);

imshow(fca1,[]);

title('加密');

im2=idwt2(ca1,ch1,cv1,cd1,'bior3.7');

figure(4);

imshow(uint8(im2),[]);

title('灰度图像小波重构');

im3=idwt2(fca1,ch1,cv1,cd1,'bior3.7');

figure(5);

imshow(uint8(im3),[]);

title('加密图像小波重构');

%%%%%%以下为混沌解密算法%%%%%%

e=hundungen(M,N,0.1);

[fca1,ch1,cv1,cd1]=dwt2(im3,'bior3.7');

fca2=(fca1-(1-tt)*e)/tt;

im4=idwt2(fca2,ch1,cv1,cd1,'bior3.7');

figure(6);

imshow(uint8(im4),[]);

title('解密图像小波重构');

%置乱后图像的均值

figure(7);

subplot(221)

imhist(uint8(im1));

title('初始图像的直方图');

subplot(222)

imhist(uint8(fca1));

title('ca1系数加密之后的直方图');

subplot(223)

imhist(uint8(im3));

title('加密之后的直方图');

subplot(224)

imhist(uint8(im4));

title('解密之后的直方图');

ssy=sum(sum(im3));

%置乱后图像的均值

uy=ssy/(M*N);

vy=sum(sum((im3-uy)^2));

ssx=sum(sum(im1));

%原图像的均值

ux=ssx/(M*N);

vx=sum(sum((im1-ux)^2));

Variancey=vy/uy; %置乱后图像的方差

Variancex=vx/ux; %原图像的方差

%置乱度

DDD=Variancey/Variancex;

etime(clock,t0)

五.运行结果及分析总结

  1.运行结果:


2.结果分析:

由程序的运行结果来看,原图被加密后在显示出来,已经无法辨别其内容,实现了图像数据的隐藏,这种混沌序列方法对图像数据的加密是十分有用,实现了信息的保密,在网络传输中能够很好地保护图像数据不被第三方轻易获取其内容,实现数据的隐藏保护。

3.心得体会

通过运用matlab语言进行图像数据的加解密,不仅了解了matlab本身处理信息的优越性也了解了信息安全的必要性,对于信息的保密是十分重要的,尤其是一些安全部门。对于图像信息的加密了解了混沌序列的一些初步知识,对于混沌序列的思想有的一些了解,本程序是通过异或运算的特性对图像信息进行加解密,使图像信息的到保护。人参、鹿茸和阿胶。”阿胶的药用已有两千多年的悠的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/453105.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Eclipse系列】解决Eclipse中xxx.properties文件中文乱码问题

问题描述&#xff1a;由于eclipse对Properties资源文件的编码的默认设置是ISO-8859-1&#xff0c;所以在打开.properties文件时&#xff0c;会发现中文乱码了&#xff0c;如图&#xff1a; 解决方法&#xff1a; 1、一次生效法 右击该properties文件–>properties–>Re…

力扣2653.滑动窗口的美丽值

给你一个长度为 n 的整数数组 nums &#xff0c;请你求出每个长度为 k 的子数组的 美丽值 。 一个子数组的 美丽值 定义为&#xff1a;如果子数组中第 x 小整数 是 负数 &#xff0c;那么美丽值为第 x 小的数&#xff0c;否则美丽值为 0 。 请你返回一个包含 n - k 1 个整数…

__问题——进入启动文件_卡死在Default_Handler_死机

MCU&#xff1a;STM32F407VET6 先说结论&#xff0c;调试时跳转到启动文件里的死循环&#xff0c;只要不是硬件错误中断&#xff0c;那么多半是因为中断处理函数没有定义导致的。 【历程】 今天在测试最小单片机系统时&#xff0c;定义了一个按键处理&#xff0c;依赖的是外部中…

全网免费的文献调研方法以及获取外网最新论文、代码和翻译pdf论文的方法(适用于硕士、博士、科研)

1. 文献调研 学术搜索引擎(十分推荐前三个&#xff0c;超有用)&#xff1a;使用 Google Scholar(https://scholar.google.com/)(https://scholar.google.com.tw/)(巨人学术搜索‬‬)、&#xff08;三个都可以&#xff0c;镜像网站&#xff09; arXiv(https://arxiv.org/)、&am…

【python】OpenCV—Sort the Point Set from Top Left to Bottom Right

文章目录 1、功能描述2、代码实现3、效果展示4、更多例子5、参考 1、功能描述 给出一张图片&#xff0c;里面含有各种图形&#xff0c;取各种图形的中心点&#xff0c;从左到右从上到下排序 例如 2、代码实现 import cv2 import numpy as npdef process_img(img):img_gray c…

【计算机网络原理】GBN,SR,TCP区别以及案例介绍

概念介绍 GBN、SR和TCP协议的主要区别在于它们的重传机制、确认方式以及缓存机制的不同。‌ GBN&#xff08;Go-Back-N&#xff09;协议在数据传输中&#xff0c;如果某个报文段没有被正确接收&#xff0c;那么从这个报文段到后面的所有报文段都需要重新发送。GBN采用累计应答…

网络安全基础知识点_网络安全知识基础知识篇

文章目录 一、网络安全概述1.1 定义1.2 信息安全特性1.3 网络安全的威胁1.4 网络安全的特征 二、入侵方式2.1 黑客2.1.1 入侵方法2.1.2 系统的威胁2.2 IP欺骗与防范2.2.1 TCP等IP欺骗基础知识2.2.2 IP欺骗可行的原因2.2.3 IP欺骗过程2.2.4 IP欺骗原理2.2.5 IP欺骗防范2.3 Sniff…

Verilator——最简单、最细节上手教程

目录 前言工具安装Verilator 安装GTKwave 安装 Verilator 基础用法fst格式和vcd格式的wave文件Verilator 的使用 Verilator 的进阶使用与GDB搭配与makefile搭配 Verilator 的高阶用法访问模块内部数据 前言 此教程会以ubuntu22.04为例 从如何安装&#xff0c;到如何使用 全程帮…

双十一购物节有哪些好物值得入手?2024双十一好物清单合集分享

一年一度的双十一购物狂欢节即将来临&#xff0c;各大平台纷纷开启预热活动&#xff0c;伴随着品牌的疯狂折扣和满减优惠&#xff0c;众多商品即将迎来超值的价格。现在正是大家“剁手”换新装备的大好时机。作为一名深耕智能产品多年的资深达人&#xff0c;今天这期我将从不同…

论文研读 | End-to-End Object Detection with Transformers

DETR&#xff1a;端到端目标检测的创新 —— 作者 Nicolas Carion 等人 一、背景与挑战 目标检测是计算机视觉领域的一个核心任务&#xff0c;要求模型精确识别图像中的物体类别和位置。传统方法如 Faster R-CNN&#xff0c;因其区域建议网络等复杂结构&#xff0c;使得模型调…

Java使用原生HttpURLConnection实现发送HTTP请求

Java 实现发送 HTTP 请求&#xff0c;系列文章&#xff1a; 《Java使用原生HttpURLConnection实现发送HTTP请求》 《Java使用HttpClient5实现发送HTTP请求》 《SpringBoot使用RestTemplate实现发送HTTP请求》 1、HttpURLConnection 类的介绍 HttpURLConnection 是 Java 提供的…

Siri哑口无言?苹果AI功能落后竞争对手整整2年

就在近期&#xff0c;苹果员工声称&#xff1a;苹果的AI技术可能落后于其主要竞争对手整整两年之久。这个消息犹如一颗重磅炸弹&#xff0c;在科技圈引发了广泛的讨论和猜测。究竟是什么原因导致了这个曾经的创新先锋在AI赛道上如此落后&#xff1f; 苹果AI落后近两年&#xff…

安装nginx实现多ip访问多网站

关闭防火墙并停selinux&#xff1a; 挂载&#xff1a; 安装nginx&#xff1a; 判断nginx是否成功启动&#xff1a; 打开nmtui并添加多个ip&#xff1a; 重启nmtui&#xff1a; 查看多ip是否配置成功: 配置文件&#xff1a; 创建文件&#xff1a; 根据配置在主机创建数据文件&a…

leetcode day1 910+16

910 最小差值 给你一个整数数组 nums&#xff0c;和一个整数 k 。 在一个操作中&#xff0c;您可以选择 0 < i < nums.length 的任何索引 i 。将 nums[i] 改为 nums[i] x &#xff0c;其中 x 是一个范围为 [-k, k] 的任意整数。对于每个索引 i &#xff0c;最多 只能 …

实现vlan间的通信

方法一&#xff1a;单臂路由 概述 单臂路由是一种网络配置&#xff0c;它允许在路由器的一个物理接口上通过配置多个子接口来处理不同VLAN的流量&#xff0c;从而实现VLAN间的通信。 原理 路由器重新封装MAC地址&#xff0c;转换Vlan标签 基础模型 1、配置交换机的链…

oracle数据恢复—文件损坏导致Oracle数据库打开报错的数据恢复案例

oracle数据库故障&分析&#xff1a; 打开oracle数据库时报错&#xff0c;报错信息&#xff1a;“system01.dbf需要更多的恢复来保持一致性&#xff0c;数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有&#xff1a;控制文件损坏、数据文件损坏、数据文件…

【Linux】解析在【进程PCB】中是如何实现【信号的处理方式(抵达/未决/阻塞)】

前言 大家好吖&#xff0c;欢迎来到 YY 滴 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Linux》…

Docker架构

什么是 Docker&#xff1f; Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 使您能够将应用程序与基础设施分离&#xff0c;从而更快速地交付软件。通过 Docker&#xff0c;您可以像管理应用程序一样管理基础设施。利用 Docker 在代码发布、测试和部署方面的方…

聚焦IOC容器刷新环节postProcessBeanFactory(BeanFactory后置处理)专项

目录 一、IOC容器的刷新环节快速回顾 二、postProcessBeanFactory源码展示分析 &#xff08;一&#xff09;模版方法postProcessBeanFactory &#xff08;二&#xff09;AnnotationConfigServletWebServerApplicationContext 调用父类的 postProcessBeanFactory 包扫描 …

数字后端零基础入门系列 | Innovus零基础LAB学习Day2

今天开始更新数字IC后端设计实现中Innovus零基础Lab学习后续内容。 数字后端零基础入门系列 | Innovus零基础LAB学习Day1 ####LAB5-2 这个章节的目标也很明确——学习掌握工具的一些常用快捷键。 这里只需要掌握以下几个快捷键即可。其他小编我也不会&#xff0c;也用不着。…