C#实现基于Logistic映射混沌加密算法(可加密静态图片和动态图片)
这是本菜鸡在《信息隐藏》中实现的图像加密,选用的是logistics混沌加密算法,希望对你的课设或项目有所帮助
文章目录
- 基于Logistic映射混沌加密算法
- 逻辑斯蒂(Logistic)模型
- 特点
- 二、混沌加密流程图
- 三、具体实现
- 四.核心代码实现
- **logistic迭代函数**
- 对图片帧的像素的加密函数
- 五.静态图片加密演示
- 程序界面
- 加密过程
- 解密过程
- 六、动态图片加密
- 七、总结
- logistics算法优点
- 程序实现中出现的问题
基于Logistic映射混沌加密算法
逻辑斯蒂(Logistic)模型
其中,参数μ∈(0,4],Xn∈(0,1),当3.5699…<μ≤4时,系统处于混沌状态,混沌系统是指在一个确定性系统中,存在着貌似随机的不规则运动,其行为表现为不确定性、不可重复、不可预测,这就是混沌现象
特点
其中,0<u ≤4称为分支参数,Xn+1 ∈(0,1)。当 1≤u < u1=3.0时 ,系统的稳态解为不动点 即周期 1解 ;当 u=u1=3.0时 ,系统 的稳态解由周期 1变为周期 2,这是二分叉过程 ; 当u=u 2=3.449489时 ,系统 的稳态解 由周期 2 分叉为周期 4;当 u= u3=3.544090时,系统 的稳 态解由周期 4分叉 为周期 8;当 达到极限值 u=3.5699456时 ,系统的稳态解是周期 2 解 ,即 3. 5699456<u ≤4时 ,logistic映射呈现混沌状态。
u=4时的特点:
随机性:当 b:4时,Logistic映射在有限迭 代 内不稳定运动 ,随后其长时间的动态行为将显示 随机性质 。
规律性:尽管 |Xn|体现出随机性质 ,但它是由确定性方程导出的,初值 x0确定后 Xn便 已确定 ,即其随机性是 内在的,这就是混沌运动的规律性
遍历性:混沌运动的遍历性是指混沌 变量 能在一定范 围内按其 自身规律不重复地遍历所有 状态。
对初值的敏感性:初值 x0的微小变化将 导致序列 {Xn}远期行为的巨大差异。
具有分形的性质:混沌的奇异吸引子在微 小尺度上具有与整体 自相似的几何结构。
二、混沌加密流程图
三、具体实现
四.核心代码实现
logistic迭代函数
private static double logistic(double u, double x, int n){for (int i = 0; i < n; i++){x = u * x * (1 - x);}return x;}
对图片帧的像素的加密函数
public static Bitmap Encrypt(Bitmap src, double u, double x0){Bitmap dest = new Bitmap(src.Width, src.Height);int temp =Convert.ToInt32(3141 * u*u*u);double x = logistic(u, x0, temp);int key=0;for (int i = 0; i < src.Width; i++){for (int j = 0; j < src.Height; j++){Color srcColor = src.GetPixel(i, j);x = logistic(u, x, Convert.ToInt32(u*u));key = Convert.ToInt32(Math.Floor((Math.Sqrt(x) * temp)) % 256);int r = key ^ srcColor.R;//红色组件值x = logistic(u, x, Convert.ToInt32( Math.Sqrt(u)));key = Convert.ToInt32(Math.Floor(Math.Sqrt(x) * temp)) % 256;int g = key ^ srcColor.G;//绿色组件值x = logistic(u, x, Convert.ToInt32(u));key = Convert.ToInt32(Math.Floor(Math.Sqrt(x) * temp)) % 256;int b = key ^ srcColor.B;//蓝色组件值dest.SetPixel(i, j, Color.FromArgb(r, g, b));//基于指定的(红色、绿色和蓝色)创建 Color 结构}}return dest;}
五.静态图片加密演示
程序界面
参数U和X直接影响输出图像,相当于加密的私钥
加密过程
解密过程
解密需要用加密时的参数
六、动态图片加密
主要思想是先将GIF图片拆分成图片帧再分别对每个图片的像素进行加密,最后将图片帧以原GIF图片的帧延迟合并起来成新的加密后的GIF图片,解密同理
七、总结
logistics算法优点
1)安全性高: 混沌系统对初始值和参数非常敏感 ,可以提供 很大的密钥集合 ,完全满足加 密的需要 ,通过对混 沌系统生成的二进制序列进行检验 ,0和 1的分布 均匀,游程符合随机数要求 ,可以认为是随机序列 , 而且混沌加密属于流密码 ,对分组加密的攻击方法 是无效的,同时对选择 明文密文攻击方法 ,由于混 沌的单 向性和混沌信号的迭代处理 ,异或操作后密 钥流的推断几乎不可能
2)代价小:算法的代价包括时间代价和空间代价,时间代 价又分为准备时间和加密时间。通常 ,加密前的准 备时间主要是用来完成生成子密钥,加密时间主要 是在子密钥 的控制下对明文数据进行变换 ,混沌加 密属于流密码的范畴 ,它的准备时间非常短 ;加密 时由于只对数据的各个位进行异或操作 ,其时间主 要花费在密钥流的生成操作上 ,相对于 目前流行的 分组加密算法 ,其时间花费也是很少的。空间代价 分为算法实现的静止空 间和运行态空 间 L。静止 空问指算法变成程序后本身所 占用的空间 ,一般表 现为执行代码 的长度。运行态空间指在加密过程中算法所需要 的临时空间。混沌加密算法没有 s — box空间,临时变量也比较少,而且 ,它通过循环 产生密钥流 ,循环过 程中需要寄存的变量有限 ,因 此,其运行 时占用 的空间很少 ,在空间代价上是 比 较优秀的
3)易于实现 混沌加 密算法其加密和解密过程是可以重用 的,这样其所 占用 的空间大大缩小 它的软件和硬 件实现特性都 比较好。
程序实现中出现的问题
对于静态图片的加解密在功能实现上是没有问题的,但是对GIF加密图像解密后不能完全还原,解密出来的图片有噪点问题,该问题应该是在分解或合成图片时出现的,使用的相关函数是从网络中找的,自己写的加密算法本身没有问题
C#实现基于Logistic映射混沌加密算法(可加密静态图片和动态图片)相关推荐
- 混沌序列 java,基于Logistic映射混沌加密算法的研究_韩凤英
第7卷第1期长沙航空职业技术学院学报 Vo1.7No .1 2007年3月 CHANGS HA AERO NAUT I CAL VOCATI ONAL AND TECHN I CAL COLLEGE ...
- aes解密流程图_基于AES和混沌的图像加密方法与流程
本发明涉及一种信息加密技术,特别是涉及一种图像加密方法. 背景技术: 在军事系统.电子政务.金融系统以及日常生活等领域,每天都会产生大量的图像.为保护这些图像信息内容不被窃取,图像加密技术引起了学术界 ...
- 基于MATLAB的混沌密码与数字图像加密应用、信息隐藏
基于MATLAB的混沌密码与数字图像加密应用.信息隐藏 实验目的:利用Matlab软件基于Logistic映射的加密算法对图像进行加密和解密,以及利用DEV C++软件.Excel表格绘制图像基于Lo ...
- 混沌加密算法python_基于混沌Logistic加密算法的图片加密与还原
摘要 一种基于混沌Logistic加密算法的图片加密与还原的方法,并利用Lena图和Baboon图来验证这种加密算法的加密效果.为了能够体现该算法在图片信息加密的效果,本文还采用了普通行列置乱加密算法 ...
- 基于 Logistic 混沌映射和 Arnold 变换 的变换域水印改进算法【高级网络与信息安全技术-信息隐藏期末课程论文】
基于 Logistic 混沌映射和 Arnold 变换 的变换域水印改进算法 摘要 1 简介 1.1 Arnold 变换 1.2 Logistic 混沌映射 1.3 DCT 变换 1.4 PSNR 和 ...
- 基于Logistic混沌序列和DNA编码的图像加解密算法仿真
目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 离散的Logistic映射对初值和结构参数的改变具有极端的牧感性,在一定条件下能够产生混沌,并且产生的混沌序列具有类白噪声统计 ...
- 混沌加密 matlab,MATLAB,简单的Logistic混沌加密算法原理
上课要学习MATLAB,然后搞各种图像问题,头都大了,这里分享一个简单的Logistic混沌加密算法,其实这个算法的核心是很简单的,只是几个逻辑操作就完成了. 先说一下原理吧 这里先不谈这个算法问题, ...
- 【图像加密】基于Logistic混沌图像加密与解密Matlab代码
1 简介 当今时代,科学技术发展迅猛,网络成为人们获取成为人们获取多媒体数字信息的主要渠道,数字图像作为日常交流的主要传输媒介,更是承担着信息传递的重任.保证信息在传播过程中的安全性和完整性便成了目前 ...
- 基于Logistic混沌序列图像加密
Logistic映射方程形式如下: X k + 1 = u X k ( 1 − X k ) , ( k = 1 , 2 , 3 - ) X_k+1 = uX_k ( 1- X_k),(k=1,2,3- ...
最新文章
- 不同硬件协议类型,相同的理解思路
- python split()
- 【机器学习基础】说模型过拟合的时候,说的是什么?
- android中字符串转换成整型
- FtpWebRequest.UsePassive属性:设置FTP工作模式
- response.setContentType()的作用及MIME参数详解
- ScrollView嵌套EditText联带滑动的解决办法
- paros web中间件攻击、扫描、监控
- 实现背景透明的方法,兼容ie6/7/8等浏览器
- 深度优先搜索——全排列(洛谷 P1706)
- aws s3 静态网站_使用AWS S3存储桶启动静态网站
- GoLand 快速入门教程
- 跨域问题的一次深入研究
- 精华阅读第7期|程序员职业人生规划的三点建议
- 2018 推荐系统总结
- Audiophobia(Floyd算法)
- 如何在IOS上玩gba游戏(免越狱)
- 利用Oracle RDA( Remote Diagnostic Agent)快速收集Oracle产品分析数据
- Unity Shader 玻璃材质
- leetcode 385. 迷你语法分析器