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

前言:

前篇傳送門?Arnold(貓臉)變換實現(xiàn)?

繼續(xù)開搞!!!

logistics映射

Logistic映射是研究動力系統(tǒng)、混沌、分形等復雜系統(tǒng)行為的一個經(jīng)典模型。Logistic映射又叫Logistic迭代,是一個時間離散的動力系統(tǒng)。

logistics方程

其中μ∈[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)震蕩周期如下

系統(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

html

上一篇做了個上傳圖片,好像沒啥用,直接放一個圖片多好~~

(這個決定讓我踩了個坑~后面就看到了)

2.設置全局變量

js

這里μ和x自己設置就可以,也可以做個輸入框輸入

3.創(chuàng)建canvas并繪制圖片

創(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)了一個問題

error

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攻擊(兩種典型的跨站攻擊)

所以給頁面增加一個虛擬域名并指向到文件目錄就可以了

比如這樣

1

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

js

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)_鄧紹江

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容