图像处理之Logistic混沌序列加密

前言:本文原发表在新浪博客http://blog.sina.com.cn/s/blog_b27f71160101h5bm.html,现新浪博客将其搬家至CSDN,原新浪博客停止更新。

①申请搬家后,迟迟未能收到申请搬家的码

②再熟悉一下算法

③联系键盘打字

基于以上三点,遂将博文重新敲一遍。

Logistic混沌置乱,先不说有多复杂,其实很简单。

Logistic函数是源于一个人口统计的动力学系统,其系统方程形式如下:

 X(k+1) = u * X(k) * [1 - X(k)],(k=0,1,…,n)

先不用管这个方程是怎么得出来的,觉得不舒服的话自己百度去。可以看出这个方程是非线性的,迭代的形式。要使用的话,我们需要知道两个东西:

①    初值:X(0)

②    参数:u

为什么这个方程可以称作混沌呢?它什么时候是一个混沌系统呢?这个也是有条件的:

①    0  < X(0) <
1

②   3.5699456...  <  u
<=4

当满足上述两个条件时,Logistic函数工作于混沌状态。这两个条件是怎么来的请百度,我们这里只说算法和实现。什么是混沌状态:顾名思义就是一种无序的、不可预测的、混乱的、摸不到头、摸不到尾的状态。混沌状态时会出现什么现象,我们以下面的参数为例:

①    X(0)
= 0.1

②    u
= 4

当迭代n次后,我们就得到了X(1)、X(2)、…,X(n)这么n个值。那么这就是一个混沌序列,是一维的暂且称作序列A,也就是我们想要得到的序列,在MATLAB中,可以看出X(i)(i=1,2,…,n)的取值是在(0,1)之间的——这是一个很好地特性,就像图像灰度值是在(0,255)之间一样。那么我们把这个一维序列归一化到(0,255)之间得到序列B。

再来看加密过程。对于一幅M*N大小的图像(暂且称为Picture),我们需要产生一个同样大小的矩阵来对其进行加密。如此说来,只需要迭代M*N次得到序列A,再转成序列B,此时序列B是一维的,将其转化成M*N的二维矩阵(暂且称为Fuck)。因此,用Fuck与Picutre进行异或,便可得到一幅新的图像,称作Rod,如此便完成了一次图像加密,加密后的图像为Rod。

Rod=Picture⊕Fuck(⊕表示异或)

这样我们手中的秘钥是:u,X(0)

此种加密方式称作序列加密,可以看出这种加密方式改变了下像素的灰度(直方图变了),没有改变位置。解密同样道理:Picture = Rod⊕Fuck。

代码如下:

%利用Logistic混沌映射,对灰度图像进行序列加密
function v=lock_logistic_gray(picture,x0,u)
[M,N]=size(picture);
x=x0;
%迭代500次,达到充分混沌状态
for i=1:500
    x=u*x*(1-x);
end
%产生一维混沌加密序列
A=zeros(1,M*N);
A(1)=x;
for i=1:M*N-1
A(i+1)=u*A(i)*(1-A(i));
end
%归一化序列
B=uint8(255*A);
%转化为二维混沌加密序列
Fuck=reshape(B,M,N);
Rod=bitxor(picture,Fuck);%异或操作加密
v=Rod;
figure;
imshow([picture,v]);
%完

效果图:

                             

加密前                                                                              加密后

加密前直方图

加密后直方图

时间: 2024-10-09 14:49:13

图像处理之Logistic混沌序列加密的相关文章

图像处理之Logistic混沌置乱加密

前言:本文原发表在新浪博客http://blog.sina.com.cn/s/blog_b27f71160101h5gi.html,现新浪博客将其搬家至CSDN,原新浪博客停止更新. ①申请搬家后,迟迟未能收到申请搬家的码 ②再熟悉一下算法 ③联系键盘打字 基于以上三点,遂将博文重新敲一遍. Logistic混沌置乱加密: 这里再根据Logistic混沌进行另一种置乱:位置置乱. 什么是位置置乱,顾名思义就是把图像中某一像素点的位置,移动到另一目的点.我们知道这个目的点当然是越随机越好.这个过程

序列加密

现在字符序列 char buf[] = “hello everyone”; 按行读的话,肯定可以读出数据,如果按列来读话,则会出再乱码的现像.正是这种现像可作为一种加密手段,称为序列加密. 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 char *encode(char *str, int column);//加密函数 5 char **get2DMem(int row, int c

图像处理之约瑟夫置乱加密

前言:本文原发表在新浪博客http://blog.sina.com.cn/s/blog_b27f71160101h5hb.html,现新浪博客将其搬家至CSDN,原新浪博客停止更新. ①申请搬家后,迟迟未能收到申请搬家的码 ②再熟悉一下算法 ③联系键盘打字 基于以上三点,遂将博文重新敲一遍. 约瑟夫置乱加密 如果看了前两篇博客的朋友都会知道这个思路,如果没有看,那么请先看这里: ①图像处理之Logistic混沌序列加密 ②图像处理之Logistic混沌置乱加密 如果你看了,那么好极了,下面我们利

混沌方法的数字图像加密

Abstract:目前混沌系统与加密技术相结合是现如今最热门的一个课题,虽然有大量的加密算法面世,但是这些加密算法并不成熟,仍然需要进一步的研究.本文采用像素位置置乱变换和像素值替代变换相结合的加密思想,设计出一种基于混沌的数字图像加密算法.引入了整数域上的逆仿射变换,算法中采用二维 logistic 混沌映射相结合的方法,生成多组混沌序列,像素置乱变换与灰度值替换都由这些混沌序列所控制.多混沌序列产生的密钥空间大于单一的混沌序列所产生的密钥空间,因此本文研究的算法加密强度很高. 1. 虫口模型

混沌数学之二维logistic模型

上一节讲了logistic混沌模型,这一节对其扩充一下讲二维 Logistic映射.它起着从一维到高维的衔接作用,对二维映射中混沌现象的研究有助于认识和预测更复杂的高维动力系统的性态.通过构造一次藕合和二次祸合的二维Logistic映射研究了二维Logistic映射通向混沌的道路,分析了其分形结构和吸引盆的性质,指出选择不同的控制参数,二维映射可分别按Feigenbaum途径等走向混沌,并且指出在控制参数空间中的较大的区域. 二维滞后Logistic映射的数学方程为: x(n+1)=y(n);y

流媒体加密(1)

http://www.jiamisoft.com/blog/11238-liumeitijiamijishu.html 随着Internet的飞速发展和网上多媒体应用的普及,数字版权和隐私权的保护已成了一个愈来愈令人关注的问题,媒体资源的安全 也就成了一个热点的研究课题,而加密技术是保护媒体资源安全最重要的技术手段之一.笔者从传统密码技术入手,在结合流式媒体的特征基础上对其加密/解密机 制进行了深入的研究目的是将传统的密码技术与新兴的流媒体技术相结合,实现多媒体数据的实时加密保护. 一.用常规密

什么是私有密钥密码技术——密钥加密算法采用同一把密钥进行加密和解密

什么是私有密钥密码技术 私有密钥(Symmetric Key),又叫对称密钥.密钥加密算法采用同一把密钥进行加密和解密.它的优点是加密和解密速度非常快,但密钥的分发和管理比较困难.信息的发送者和接收者必须明确同一把密钥.因此,必须进行密钥交流,这通常需要其他更安全的信道来传送密钥.另外,每一对用户都需要有自己的一个独一无二的密钥.因此,如果一个发送者与很多人通信,就需要管理很多密钥.主要的对称密钥加密算法有DES.3DES.RC2.RC4.RC5.Blowtish和CAST等.在VPN中常用的有

混沌粒子群算法

参考文献: 基于混沌序列的粒子群优化算法[J], 孟红计老师 #include <iostream> #include <math.h> #include <time.h> using namespace std; #define M 50 //群体数目50 #define N 4 //每个粒子的维数4 #define NN 500 //迭代次数 #define chaotic_count 3 //判断是否进入停滞状态 #define gama 0.001 #defin

浅谈https\ssl\数字证书[转载]

在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: https:在http(超文本传输协议)基础上提出的一种安全的http协议,因此可以称为安全的超文本传输协议.http协议直接放置在TCP协议之上,而https提出在http和TCP中间加上一层加密层.从发送端看,这一层负责把http的内容加密后送到下层的TCP,从接收方看,这一层负责将TCP送来的数据解密还原成http的内容.