基于logistics映射的混沌图像加密

前言:

前篇传送门 Arnold(猫脸)变换实现 

继续开搞!!!

logistics映射

Logistic映射是研究动力系统、混沌、分形等复杂系统行为的一个经典模型。Logistic映射又叫Logistic迭代,是一个时间离散的动力系统。

logistics方程

其中μ∈[0,4] X∈[0,1]

当变化不同的参数μ的时候,该方程会展现出不同的动力学极限行为

稳定点(即最终x(t)始终为同一个数值)、周期(x(t)会在2个或者多个数值之间跳跃,以及混沌:x(t)的终态不会重复,而会等概率地取遍某区间

这次要做的是混沌图像加密,所以我们需要使模型处于混沌状态即:

μ取值

当μ∈[3.56994564,4]时,系统震荡周期如下

系统震荡周期

事实上,从μ>3.54以后,系统震荡的周期就变得越来越长,直到大概3.6的时候,周期长度趋向于无穷大,此时,系统开始了混沌状态。我们看到,随着系统的演化,x(t)的值会一直在0.3到0.9之间徘徊,没有固定的周期,而且行为很随机。

混沌加密

混沌加密的方法有很多,比如:

基于DCSK的混沌加密

基于Lorenz三维超混沌系统的图像加密

基于小波变换的混沌图像加密等等

logistics方程的混沌状态只是其中的一种实现方法

那么接下来开始上代码吧


代码实现步骤

1.创建html

html

上一篇做了个上传图片,好像没啥用,直接放一个图片多好~~

(这个决定让我踩了个坑~后面就看到了)

2.设置全局变量

js

这里μ和x自己设置就可以,也可以做个输入框输入

3.创建canvas并绘制图片

创建canvas

写好之后页面变成了这个样子,设置的图片已经被绘制到canvas上了


页面展示

4.实现算法

在执行算法前先对初始值x迭代500次,达到充分混沌状态

迭代

创建一维混沌序列

代码

执行这段代码后我们得到了一个长度为N的一维混沌序列,其实就是个元素在0-1之间随机的一维数组

下一步对一维混沌序列转换数据格式

matlab中成为归一化序列 uint8 格式,js 中没有这个函数自己实现一个就可以、

代码

现在我们就得到了一个长度为N(N = width * width)的一维数组,下面将一维混沌序列转化成width*width的二维混沌序列

代码

代码中的g_储存的就是二维混沌序列,接下来将图片的对应像素点的rgb和二维混沌序列中的uint8数据进行异或处理得到一个新的rgb并绘制重新绘制canvas

获取所有像素点

在获取所有像素点的时候出现了一个问题

error

1. 首先没有服务器环境(如:本地的 html网页,操作本地的图片),

    就会报"Unable to get image data from canvas because the canvas has been tainted by cross-origin data"错误。

    因为本地测试用的图片是文件夹内的,js跨域限制是不能获取非同一域名下的数据的,

    而本地的位置是没有域名的,所以浏览器都认为你是跨域,导致报错。

2. 为了阻止欺骗,浏览器会追踪 image data。

   当把一个和canvas的域不同的图片放到canvas上,这个canvas就成为 “tainted”(被污染的),浏览器就不让你操作该canvas 的任何像素。

   是为了阻止多种类型的XSS/CSRF攻击(两种典型的跨站攻击)

所以给页面增加一个虚拟域名并指向到文件目录就可以了

比如这样

1

接下来用已经得到的二维混沌序列对图片的对应像素点进行加密

js

5.最终效果


加密前


加密后

结:

基于logistics映射的混沌图像加密就已经完成了;

因为异或的特性,所以对已经加密的图像用同样的二维混沌序列再次加密就得到了原图像;

所以在解密时用相同的初值x和参数μ得到的二维混沌序列就可以对加密图像进行解密了



参考:

https://blog.csdn.net/w5167839/article/details/45485645

http://wiki.swarma.net/index.php/Logistic%E6%98%A0%E5%B0%84

https://blog.csdn.net/hujingshuang/article/details/45717807

https://www.jiamisoft.com/blog/12591-logisticyingshejiamisuanfa.html

基于Logistic映射混沌加密算法的研究_韩凤英

基于Logistic映射混沌加密算法的设计与实现_邓绍江

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351