前言:
前篇傳送門?Arnold(貓臉)變換實現(xiàn)?
繼續(xù)開搞!!!
logistics映射
Logistic映射是研究動力系統(tǒng)、混沌、分形等復雜系統(tǒng)行為的一個經(jīng)典模型。Logistic映射又叫Logistic迭代,是一個時間離散的動力系統(tǒng)。

其中μ∈[0,4] X∈[0,1]
當變化不同的參數(shù)μ的時候,該方程會展現(xiàn)出不同的動力學極限行為
穩(wěn)定點(即最終x(t)始終為同一個數(shù)值)、周期(x(t)會在2個或者多個數(shù)值之間跳躍,以及混沌:x(t)的終態(tài)不會重復,而會等概率地取遍某區(qū)間)
這次要做的是混沌圖像加密,所以我們需要使模型處于混沌狀態(tài)即:

當μ∈[3.56994564,4]時,系統(tǒng)震蕩周期如下

事實上,從μ>3.54以后,系統(tǒng)震蕩的周期就變得越來越長,直到大概3.6的時候,周期長度趨向于無窮大,此時,系統(tǒng)開始了混沌狀態(tài)。我們看到,隨著系統(tǒng)的演化,x(t)的值會一直在0.3到0.9之間徘徊,沒有固定的周期,而且行為很隨機。
混沌加密
混沌加密的方法有很多,比如:
基于DCSK的混沌加密
基于Lorenz三維超混沌系統(tǒng)的圖像加密
基于小波變換的混沌圖像加密等等
logistics方程的混沌狀態(tài)只是其中的一種實現(xiàn)方法
那么接下來開始上代碼吧
代碼實現(xiàn)步驟
1.創(chuàng)建html

上一篇做了個上傳圖片,好像沒啥用,直接放一個圖片多好~~
(這個決定讓我踩了個坑~后面就看到了)
2.設置全局變量

這里μ和x自己設置就可以,也可以做個輸入框輸入
3.創(chuàng)建canvas并繪制圖片

寫好之后頁面變成了這個樣子,設置的圖片已經(jīng)被繪制到canvas上了

4.實現(xiàn)算法
在執(zhí)行算法前先對初始值x迭代500次,達到充分混沌狀態(tài)

創(chuàng)建一維混沌序列

執(zhí)行這段代碼后我們得到了一個長度為N的一維混沌序列,其實就是個元素在0-1之間隨機的一維數(shù)組
下一步對一維混沌序列轉(zhuǎn)換數(shù)據(jù)格式
matlab中成為歸一化序列?uint8 格式,js 中沒有這個函數(shù)自己實現(xiàn)一個就可以、

現(xiàn)在我們就得到了一個長度為N(N = width * width)的一維數(shù)組,下面將一維混沌序列轉(zhuǎn)化成width*width的二維混沌序列

代碼中的g_儲存的就是二維混沌序列,接下來將圖片的對應像素點的rgb和二維混沌序列中的uint8數(shù)據(jù)進行異或處理得到一個新的rgb并繪制重新繪制canvas

在獲取所有像素點的時候出現(xiàn)了一個問題

1. 首先沒有服務器環(huán)境(如:本地的 html網(wǎng)頁,操作本地的圖片),
? ? 就會報"Unable to get image data from canvas because the canvas has been tainted by cross-origin data"錯誤。
? ? 因為本地測試用的圖片是文件夾內(nèi)的,js跨域限制是不能獲取非同一域名下的數(shù)據(jù)的,
? ? 而本地的位置是沒有域名的,所以瀏覽器都認為你是跨域,導致報錯。
2.?為了阻止欺騙,瀏覽器會追蹤 image data。
? ?當把一個和canvas的域不同的圖片放到canvas上,這個canvas就成為?“tainted”(被污染的),瀏覽器就不讓你操作該canvas 的任何像素。
? ?是為了阻止多種類型的XSS/CSRF攻擊(兩種典型的跨站攻擊)
所以給頁面增加一個虛擬域名并指向到文件目錄就可以了
比如這樣

接下來用已經(jīng)得到的二維混沌序列對圖片的對應像素點進行加密

5.最終效果


結:
基于logistics映射的混沌圖像加密就已經(jīng)完成了;
因為異或的特性,所以對已經(jīng)加密的圖像用同樣的二維混沌序列再次加密就得到了原圖像;
所以在解密時用相同的初值x和參數(shù)μ得到的二維混沌序列就可以對加密圖像進行解密了
參考:
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映射混沌加密算法的設計與實現(xiàn)_鄧紹江