国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于壓縮編碼的gif圖像加密方法

      文檔序號(hào):7863638閱讀:409來源:國(guó)知局
      專利名稱:基于壓縮編碼的gif圖像加密方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于數(shù)字圖像加密領(lǐng)域,特別是涉及一種GIF圖像加密方法。
      背景技術(shù)
      隨著信息技術(shù)和網(wǎng)絡(luò)通信的快速發(fā)展和普及,越來越多的圖像和其它多媒體信息需要進(jìn)行存儲(chǔ)并在網(wǎng)絡(luò)上進(jìn)行傳輸,由于計(jì)算機(jī)和網(wǎng)絡(luò)的自身特點(diǎn)及其廣泛存在的安全性漏洞,使得這些多媒體信息可能會(huì)被一些別有用心的攻擊者獲取并加以利用,從而帶來各種損失和危害,因此信息安全技術(shù)日益受到人們的重視。加密技術(shù)是保障信息安全的重要手段,然而,像DES、AES等傳統(tǒng)的加密手段存在著一些固有的弱點(diǎn),比如加密速度不 高和沒有考慮到待加密的多媒體信息中的冗余信息,利用它們對(duì)多媒體信息進(jìn)行加密尚存在著眾多不如人意的地方。因此,目前已有許多研究者針對(duì)多媒體信息的格式展開研究,并提出了眾多與之相應(yīng)的加密技術(shù)?,F(xiàn)有的專門針對(duì)圖像數(shù)據(jù)的加密技術(shù)中,主要有基于壓縮編碼的加密和選擇圖像加密兩種圖像加密方式,基于壓縮編碼的加密方式由于能夠?qū)⒓用芎蛪嚎s編碼這兩個(gè)原本看似獨(dú)立的步驟融合到一起,從而可以在單個(gè)流程里同時(shí)完成數(shù)據(jù)壓縮和數(shù)據(jù)加密的功能,這種方式不僅簡(jiǎn)化了圖像數(shù)據(jù)處理的流程,也能夠顯著提高加密的效率。選擇圖像加密僅加密圖像中的重要數(shù)據(jù)部分,例如圖像空域數(shù)據(jù)的高位平面或者變換域中的重要系數(shù)。因?yàn)檫@些重要數(shù)據(jù)部分極大的影響了圖像內(nèi)容的呈現(xiàn),我們可以通過加密少量數(shù)據(jù)來達(dá)到整幅圖像的安全性。在圖像加密領(lǐng)域,已有很多適應(yīng)于真彩圖像的加密方法,但針對(duì)GIF (GraphicsInterchange Format,圖像互換格式)等索引格式的加密方法仍不多見,GIF由CompuServe公司于1987年制定,并在1989年推出其增強(qiáng)版本,具有支持文本控制、動(dòng)畫播放等多種特性,其中的圖像數(shù)據(jù)經(jīng)過LZW編碼(Lempel-Ziv-Welch Encoding)壓縮,存儲(chǔ)時(shí)占用空間較小,目前已被廣泛應(yīng)用于萬維網(wǎng)中,鑒于GIF應(yīng)用的廣泛性,有必要對(duì)其安全性加以考慮。首先,現(xiàn)在已經(jīng)有一些針對(duì)LZW編碼的加密算法,但是現(xiàn)有加密算法都是在LZW編碼時(shí)有新元素加入到字典中時(shí)(即針對(duì)當(dāng)前需要編碼的數(shù)據(jù),字典中并沒有找到相應(yīng)的匹配項(xiàng))引入加密操作,但是,LZW編碼壓縮效果的好壞取決于匹配到字典中數(shù)據(jù)的次數(shù),如果匹配次數(shù)越多,壓縮效果越好,另一方面,對(duì)于含有大量冗余信息(即可以充分壓縮)的數(shù)據(jù),其安全性是比較低的,我們?cè)诩用軙r(shí)要充分掩蓋其明文的冗余信息分布規(guī)律;否者,攻擊者很可能利用這些冗余信息得到關(guān)于明文的信息。對(duì)于包含少量冗余信息(即不能大量壓縮)的數(shù)據(jù),其安全性相對(duì)是比較高的,而對(duì)數(shù)據(jù)進(jìn)行LZW編碼的時(shí)候,當(dāng)數(shù)據(jù)包含大量冗余信息的時(shí)候,其字典匹配的次數(shù)會(huì)增加,反之會(huì)減少。因此,現(xiàn)有的基于LZW編碼的加密算法并不能根據(jù)圖像明文數(shù)據(jù)的統(tǒng)計(jì)特性提供相應(yīng)的加密強(qiáng)度的自適應(yīng)調(diào)整。其次,目前有些基于LZW編碼的加密算法,當(dāng)引入加密操作以后,會(huì)影響到LZW壓縮編碼的壓縮效果,增加了密文的體積。最后,現(xiàn)有在對(duì)GIF圖像進(jìn)行加密的研究上,并沒有考慮GIF顏色索引,而GIF顏色索引是GIF圖像數(shù)據(jù)的來源,因此對(duì)安全的影響非常大。因此本領(lǐng)域技術(shù)人員致力于開發(fā)一種更加安全的GIF圖像加密方法,并且在加密的同時(shí)不破壞GIF圖像壓縮的效果。

      發(fā)明內(nèi)容
      有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問題是提供一種更加安全和高效的GIF圖像加密方法,并且在加密的同時(shí)不破壞GIF圖像壓縮的效果。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于壓縮編碼的GIF圖像加密方 法,包括以下步驟步驟一、輸入GIF明文圖像;步驟二、對(duì)GIF圖像的顏色列表進(jìn)行加密或/和對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼加密步驟三、輸出GIF密文圖像;所述對(duì)GIF圖像的顏色列表進(jìn)行加密按以下步驟進(jìn)行設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);設(shè)定GIF圖像的顏色列表中各顏色分量為 T (x,y),T (x,y) G
      ,x、y 均為整數(shù)且 x G
      , y G
      ;將密鑰流中的值Kn乘以255后取整,得到Kn';設(shè)定加密后GIF圖像的顏色列表為T' (x, y);計(jì)算r(x,X) = JXuOeK1/得到加密后GIF圖像的顏色列表;所述對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼加密按以下步驟進(jìn)行SI、初始化字典,對(duì)所述字典進(jìn)行置亂;S2、讀取輸入字符,并將該輸入字符賦值給前綴字符串《,直到數(shù)據(jù)流讀完,當(dāng)數(shù)據(jù)流讀取完時(shí),輸出《在字典中所對(duì)應(yīng)的元素索引值;S3、判斷當(dāng)前字典中是否存在《Q,Q為輸入字符;當(dāng)前字典中存在coQ時(shí),將coQ的值放入《的隊(duì)列清單;當(dāng)前字典中不存在《 Q時(shí),輸出《在所述字典中所對(duì)應(yīng)的元素索引值;S4、設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);設(shè)定當(dāng)前字典中含有I個(gè)元素,設(shè)定當(dāng)前匹配的元素索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index ;當(dāng)隊(duì)列清單不為空時(shí),取出隊(duì)列清單中隊(duì)首的值賦給Z ;計(jì)算/mfex = [/xKnJ ;交換字典中Z和index兩個(gè)位置的元素值,直到隊(duì)列清單為空;S5、設(shè)置字符串變量S,初始時(shí)所述字符串變量S為空;當(dāng)有字符串string需要加入到字典中時(shí),判斷S是否為空;當(dāng)S為空時(shí),將string賦值給S ;當(dāng)S不為空時(shí),將S插入到字典中,然后將string賦值給S。較佳的,所述步驟SI中對(duì)所述字典進(jìn)行置亂按以下步驟進(jìn)行Al、初始化字典,使所述字典包含所有單個(gè)字符;A2、設(shè)定當(dāng)前需要置亂的元素索引為i,將i的值初始化為當(dāng)前字典中含有的元素?cái)?shù)目I ;A3、計(jì)算r = L^' X K n」,r為隨機(jī)數(shù);交換字典中i和r兩個(gè)位置的元素;A4、計(jì)算i, 二卜匕當(dāng);^彡2時(shí),返回執(zhí)行步驟A2,否則結(jié)束置亂。較佳的,所述密鑰流由分段線性混沛映射迭代(Piecewise Linear ChaoticMap,PLCM)得到,由于利用分段線性混沌映射實(shí)現(xiàn)密鑰流的產(chǎn)生,實(shí)現(xiàn)了根據(jù)GIF圖像數(shù)據(jù)的特點(diǎn)設(shè)計(jì)GIF圖像加密算法,能夠自適應(yīng)地動(dòng)態(tài)調(diào)整加密的強(qiáng)度,具有較好的加密效率。進(jìn)一步的,還包括基于壓縮編碼的GIF圖像解密步驟第一步、輸入GIF密文圖像;第二步、對(duì)GIF圖像的顏色列表進(jìn)行解密或/和對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼解密第三步、輸出GIF明文圖像;所述對(duì)GIF圖像的顏色列表進(jìn)行解密按以下步驟進(jìn)行設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);設(shè)定GIF圖像的顏色列表中加密后 的各顏色分量為T' (x,y),x、y均為整數(shù)且x G
      , y G
      ;將密鑰流中的值&乘以255后取整,得到Kn';設(shè)定解密后GIF圖像的顏色列表為T (x,y),T (x,y) G
      ;計(jì)算r(x,.v) = T\x,y) 得到解密后 GIF 圖像的顏色列表;所述對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼解密按以下步驟進(jìn)行BI、初始化字典,對(duì)所述字典進(jìn)行置亂;B2、讀取第一個(gè)輸入碼字,并將該輸入碼字分別賦值給記錄當(dāng)前碼字和上一次讀入的碼字的變量CODE和OLDcode ;所述變量CODE為當(dāng)前碼字的變量,所述變量OLDcode為上一次讀入的碼字;B3、在當(dāng)前字典中找到索引為CODE的元素Q,輸出Q并將Q賦值給變量FINchar,所述變量FINchar為用以記錄當(dāng)前輸出的最后一個(gè)字符的變量;B4、讀取下一個(gè)輸入碼字,并將該輸入碼字分別賦值給變量CODE和記錄當(dāng)前輸入碼字的備份的變量INcode ;B5、設(shè)置標(biāo)志變量flag,所述標(biāo)志變量flag的初始值為false ;B6、判斷當(dāng)前字典中是否存在索引值為CODE的元素;在當(dāng)前字典中不存在索引值為CODE的元素時(shí),將所述標(biāo)志變量flag賦值為true,輸出變量FINchar的值,將變量OLDcode賦值給元素索引值C0DE,并將字典中OLDcode和FINchar構(gòu)成的字符串的索引值賦給INcode ;在當(dāng)前字典中存在前綴字符串《,能夠使得所對(duì)應(yīng)的索引值為CODE時(shí),則將Q的值壓入堆棧,并將前綴字符串《的索引賦值給C0DE,同時(shí)設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);設(shè)定當(dāng)前字典中含有I個(gè)元素,在字典中的元素索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index,計(jì)算= [yxl<n」;交換字典中Z和index兩個(gè)位置的元素值;B7、找到索引值CODE在字典中所對(duì)應(yīng)的元素Q,輸出Q并將Q賦值給變量FINchar ;B8、判斷堆棧是否為空;當(dāng)堆棧不為空時(shí),按照后進(jìn)先出的原則循環(huán)輸出堆棧頂部的元素;B9、將(OLDcode,Q)加入當(dāng)前字典;B10、判斷flag的值,當(dāng)flag的值為true時(shí),設(shè)定當(dāng)前字典中含有I個(gè)元素,(OLDcode, Q)在字典中的索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index,計(jì)算index = [/ X ICnJ ;交換字典中Z和index兩個(gè)位置的元素值。
      B11、將INcode賦值給OLDcode,然后繼續(xù)執(zhí)行步驟S4,直到數(shù)據(jù)流讀取完畢。較佳的,所述步驟BI中對(duì)所述字典進(jìn)行置亂按以下步驟進(jìn)行Cl、初始化字典,使所述字典包含所有單個(gè)字符;C2、設(shè)定當(dāng)前需要置亂的元素索引為i,將i的值初始化為當(dāng)前字典中含有的元素?cái)?shù)目Ien ;C3、計(jì)算r = |_/ X K n」,r為隨機(jī)數(shù);交換字典中i和r兩個(gè)位置的元素;C4、計(jì)算i' = i-1 ;當(dāng)i'≥2時(shí),返回執(zhí)行步驟C2,否則結(jié)束置亂。
      較佳的,所述密鑰流由分段線性混沌映射迭代得到。本發(fā)明的有益效果是本發(fā)明結(jié)合GIF壓縮編碼設(shè)計(jì)加密算法,能夠自適應(yīng)地動(dòng)態(tài)調(diào)整加密的強(qiáng)度,具有較好的加密效率,考慮了 GIF圖像顏色索引和圖像數(shù)據(jù)的安全性,并對(duì)其分別進(jìn)行加密,具有較好的安全性,在引入加密操作后對(duì)GIF圖像壓縮效果沒有任何影響,并且在引入加密操作后保持了原GIF圖像的格式兼容性。


      圖I是實(shí)施例一中基于壓縮編碼的GIF圖像加密方法的流程示意圖。圖2是實(shí)施例二中基于壓縮編碼的GIF圖像加密方法的流程示意圖。圖3是實(shí)施例三中基于壓縮編碼的GIF圖像加密方法的流程示意圖。圖4是驗(yàn)證本發(fā)明采用的原始圖像效果圖。圖5是驗(yàn)證本發(fā)明時(shí)利用加密算法加密后的結(jié)果。圖6是驗(yàn)證本發(fā)明時(shí)正常解碼后的圖像。圖7是加密前明文圖像的直方圖。圖8是加密后密文圖像的直方圖。圖9是明文圖像的水平方向上兩個(gè)相鄰像素之間的相關(guān)性。圖10是明文圖像垂直方向上兩個(gè)相鄰像素之間的相關(guān)性。圖11是明文圖像對(duì)角線方向上兩個(gè)相鄰像素之間的相關(guān)性。圖12是密文圖像水平方向上兩個(gè)相鄰像素之間的相關(guān)性。圖13是密文圖像垂直方向上兩個(gè)相鄰像素之間的相關(guān)性。圖14是密文圖像對(duì)角線方向上兩個(gè)相鄰像素之間的相關(guān)性。
      具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明實(shí)施例一如圖I所示,一種基于壓縮編碼的GIF圖像加密方法,其特征在于包括以下步驟步驟一、輸入GIF明文圖像;步驟二、對(duì)GIF圖像的顏色列表進(jìn)行加密;所述對(duì)GIF圖像的顏色列表進(jìn)行加密按以下步驟進(jìn)行設(shè)定密鑰流為K= {Kn I 0〈Kn〈l},n為正整數(shù),所述密鑰流由分段線性混沌映射迭代得到,其為現(xiàn)有技術(shù),本領(lǐng)域內(nèi)的普通技術(shù)人員能夠準(zhǔn)確理解,在此不過多說明;設(shè)定GIF圖像的顏色列表中各顏色分量為1'0^,7),1'(\7) G
      ,x、y均為整數(shù)且X G
      ,y e [O,2];將密鑰流中的值Kn乘以255后取整,得到Kn';設(shè)定加密后GIF圖像的顏色列表為T, (x,y);計(jì)算r(x,j) = 7_(uO十f得到加密后GIF圖像的顏色列表;所述密鑰流由分段線性混沌映射迭代得到。步驟三、輸出GIF密文圖像;步驟四、輸入GIF密文圖像;步驟五、對(duì)GIF圖像的顏色列表進(jìn)行解密;所述對(duì)GIF圖像的顏色列表進(jìn)行解密按以下步驟進(jìn)行設(shè)定密鑰流為K=IKn I 0〈Kn〈l},所述密鑰流由分段線性混沌映射迭代得到,n為 正整數(shù);設(shè)定GIF圖像的顏色列表中加密后的各顏色分量為T' (x,y),x、y均為整數(shù)且X G
      , y G
      ;將密鑰流中的值&乘以255后取整,得到Kn';設(shè)定解密后GIF圖像的顏色列表為T (x,y),T (x,y) G
      ;計(jì)算H.^v) = T'(x,y) 得到解密后GIF圖像的顏色列表;步驟六、輸出GIF明文圖像。實(shí)施例二 如圖2所示,一種基于壓縮編碼的GIF圖像加密方法,包括以下步驟步驟一、輸入GIF明文圖像。步驟二、對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼加密所述對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼加密按以下步驟進(jìn)行SI、初始化字典,對(duì)所述字典進(jìn)行置亂;其中對(duì)所述字典進(jìn)行置亂按以下步驟進(jìn)行Al、初始化字典,使所述字典包含所有單個(gè)字符;A2、設(shè)定當(dāng)前需要置亂的元素索引為i,將i的值初始化為當(dāng)前字典中含有的元素?cái)?shù)目Ien ;A3、計(jì)算r = \j X K n」,r為隨機(jī)數(shù);交換字典中i和r兩個(gè)位置的元素;A4、計(jì)算i' =IL-I^i'彡2時(shí),返回執(zhí)行步驟A2,否則結(jié)束置亂。S2、讀取輸入字符,并將該輸入字符賦值給前綴字符串《,直到數(shù)據(jù)流讀完,當(dāng)數(shù)據(jù)流讀取完時(shí),輸出《在字典中所對(duì)應(yīng)的元素索引值;S3、判斷當(dāng)前字典中是否存在《Q,Q為輸入字符;當(dāng)前字典中存在coQ時(shí),將coQ的值放入《的隊(duì)列清單;當(dāng)前字典中不存在《 Q時(shí),輸出《在所述字典中所對(duì)應(yīng)的元素索引值;S4、設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù),其中所述密鑰流由分段線性混沌映射迭代得到,設(shè)定當(dāng)前字典中含有I個(gè)元素,設(shè)定當(dāng)前匹配的元素索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index ;當(dāng)隊(duì)列清單不為空時(shí),取出隊(duì)列清單中隊(duì)首的值賦給Z ;計(jì)算//Kfex = XKn」!交換字典中Z和index兩個(gè)位置的元素值,直到隊(duì)列清單為空;S5、設(shè)置字符串變量S,初始時(shí)所述字符串變量S為空;當(dāng)有字符串string需要加入到字典中時(shí),判斷S是否為空;當(dāng)S為空時(shí),將string賦值給S ;當(dāng)S不為空時(shí),將S插入到字典中,然后將string賦值給S。步驟三、輸出GIF密文圖像。步驟四、輸入GIF密文圖像。
      步驟五、對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼解密所述對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼解密按以下步驟進(jìn)行BI、初始化字典,對(duì)所述字典進(jìn)行置亂;所述步驟BI中對(duì)所述字典進(jìn)行置亂按以下步驟進(jìn)行C I、初始化字典,使所述字典包含所有單個(gè)字符;C2、設(shè)定當(dāng)前需要置亂的元素索引為i,將i的值初始化為當(dāng)前字典中含有的元素?cái)?shù)目I ;C3、計(jì)算r = [_/ X K. n」,r為隨機(jī)數(shù);交換字典中i和r兩個(gè)位置的元素; C4、計(jì)算i' = i-1 ;當(dāng)i'彡2時(shí),返回執(zhí)行步驟C2,否則結(jié)束置亂。B2、讀取第一個(gè)輸入碼字,并將該輸入碼字分別賦值給記錄當(dāng)前碼字和上一次讀入的碼字的變量CODE和OLDcode ;所述變量CODE為當(dāng)前碼字的變量,所述變量OLDcode記錄為上一次讀入的碼字,所述變量OLDcode用于將上一次讀入的碼字初始化為CODE ;B3、在當(dāng)前字典中找到索引為CODE的元素Q,輸出Q并將Q賦值給變量FINchar,所述變量FINchar為用以記錄當(dāng)前輸出的最后一個(gè)字符的變量;B4、讀取下一個(gè)輸入碼字,并將該輸入碼字分別賦值給變量CODE和記錄當(dāng)前輸入碼字的備份的INcode ;B5、設(shè)置標(biāo)志變量flag,所述標(biāo)志變量flag的初始值為false ;B6、判斷當(dāng)前字典中是否存在索引值為CODE的元素;在當(dāng)前字典中不存在索引值為CODE的元素時(shí),將所述標(biāo)志變量flag賦值為true,輸出變量FINchar的值,將變量OLDcode賦值給元素索引值CODE,并將字典中OLDcode和FINchar構(gòu)成的字符串的索引值賦給INcode ;在當(dāng)前字典中存在前綴字符串《,能夠使得所對(duì)應(yīng)的索引值為CODE時(shí),則將Q的值壓入堆棧,并將前綴字符串《的索引賦值給C0DE,同時(shí)設(shè)定密鑰流為K=IKn
      I 0〈Kn〈l},n為正整數(shù);設(shè)定當(dāng)前字典中含有I個(gè)元素,在字典中的元素索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為化(161,計(jì)算^^0 = ^><1^」;交換字典中Z和index兩個(gè)位置的元素值;B7、找到索引值CODE在字典中所對(duì)應(yīng)的元素Q,輸出Q并將Q賦值給變量FINchar ;B8、判斷堆棧是否為空;當(dāng)堆棧不為空時(shí),按照后進(jìn)先出的原則循環(huán)輸出堆棧頂部的元素;B9、將(OLDcode,Q)加入當(dāng)前字典;B10、判斷flag的值,當(dāng)flag的值為true時(shí),設(shè)定當(dāng)前字典中含有I個(gè)元素,(OLDcode, Q)在字典中的索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index,計(jì)算index = \_IxKn\ ;交換字典中Z和index兩個(gè)位置的元素值。B11、將INcode賦值給OLDcode,然后繼續(xù)執(zhí)行步驟S4,直到數(shù)據(jù)流讀取完畢。步驟六、輸出GIF明文圖像。實(shí)施例三如圖3所示,一種基于壓縮編碼的GIF圖像加密方法,包括以下步驟步驟一、輸入GIF明文圖像;步驟二、對(duì)GIF圖像的顏色列表進(jìn)行加密并對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼加密所述對(duì)GIF圖像的顏色列表進(jìn)行加密按以下步驟進(jìn)行設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);所述密鑰流由分段線性混沌映射迭代得到,設(shè)定GIF圖像的顏色列表中各顏色分量為T(x, y),T(x,y) G
      ,x、y均為整數(shù)且 x G
      , y G
      ;將密鑰流中的值Kn乘以255后取整,得到Kn';設(shè)定加密后GIF圖像的顏色列表為T, 0^);計(jì)算7^,7) = ^,3;) 得到加密后GIF圖像的顏色列表;所述對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼加密按以下步驟進(jìn)行SI、初始化字典,對(duì)所述字典進(jìn)行置亂;
      所述步驟SI中對(duì)所述字典進(jìn)行置亂按以下步驟進(jìn)行Al、初始化字典,使所述字典包含所有單個(gè)字符;A2、設(shè)定當(dāng)前需要置亂的元素索引為i,將i的值初始化為當(dāng)前字典中含有的元素?cái)?shù)目I ;A3、計(jì)算r = [_/ X K n」,r為隨機(jī)數(shù);交換字典中i和r兩個(gè)位置的元素;A4、計(jì)算i'彡2時(shí),返回執(zhí)行步驟A2,否則結(jié)束置亂。S2、讀取輸入字符,并將該輸入字符賦值給前綴字符串《,直到數(shù)據(jù)流讀完,當(dāng)數(shù)據(jù)流讀取完時(shí),輸出《在字典中所對(duì)應(yīng)的元素索引值;S3、判斷當(dāng)前字典中是否存在《Q,Q為輸入字符;當(dāng)前字典中存在《0時(shí),將
      的值放入《的隊(duì)列清單;當(dāng)前字典中不存在《 Q時(shí),輸出《在所述字典中所對(duì)應(yīng)的元素索引值;S4、設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);設(shè)定當(dāng)前字典中含有I個(gè)元素,設(shè)定當(dāng)前匹配的元素索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index ;當(dāng)隊(duì)列清單不為空時(shí),取出隊(duì)列清單中隊(duì)首的值賦給Z;計(jì)算imfeY = L/xKn」;交換字典中Z和index兩個(gè)位置的元素值,直到隊(duì)列清單為空;S5、設(shè)置字符串變量S,初始時(shí)所述字符串變量S為空;當(dāng)有字符串string需要加入到字典中時(shí),判斷S是否為空;當(dāng)S為空時(shí),將string賦值給S ;當(dāng)S不為空時(shí),將S插入到字典中,然后將string賦值給S。步驟三、輸出GIF密文圖像;步驟四、輸入GIF密文圖像;步驟五、對(duì)GIF圖像的顏色列表進(jìn)行解密并對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼解密所述對(duì)GIF圖像的顏色列表進(jìn)行解密按以下步驟進(jìn)行設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);設(shè)定GIF圖像的顏色列表中加密后的各顏色分量為T' (x,y),x、y均為整數(shù)且x G
      , y G
      ;將密鑰流中的值&乘以255后取整,得到Kn';設(shè)定解密后GIF圖像的顏色列表為T(x, y),T(x, y) G
      ;計(jì)算r(x,j) = 7>,刃 Kr/得到解密后GIF圖像的顏色列表;所述對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼解密按以下步驟進(jìn)行BI、初始化字典,對(duì)所述字典進(jìn)行置亂;所述步驟BI中對(duì)所述字典進(jìn)行置亂按以下步驟進(jìn)行
      Cl、初始化字典,使所述字典包含所有單個(gè)字符;C2、設(shè)定當(dāng)前需要置亂的元素索引為i,將i的值初始化為當(dāng)前字典中含有的元素?cái)?shù)目Ien ;C3、計(jì)算r = [_/ X K n」,r為隨機(jī)數(shù);交換字典中i和r兩個(gè)位置的元素;C4、計(jì)算i' = i-1 ;當(dāng)i'彡2時(shí),返回執(zhí)行步驟C2,否則結(jié)束置亂。B2、讀取第一個(gè)輸入碼字,并將該輸入碼字分別賦值給記錄當(dāng)前碼字和上一次讀入的碼字的變量CODE和OLDcode ;所述變量CODE為當(dāng)前碼字的變量,所述變量OLDcode為上一次讀入的碼字;B3、在當(dāng)前字典中找到索引為CODE的元素Q,輸出Q并將Q賦值給變量FINchar,所述變量FINchar為用以記錄當(dāng)前輸出的最后一個(gè)字符的變量; B4、讀取下一個(gè)輸入碼字,并將該輸入碼字分別賦值給變量CODE和記錄當(dāng)前輸入碼字的備份的INcode ;B5、設(shè)置標(biāo)志變量flag,所述標(biāo)志變量flag的初始值為false ;B6、判斷當(dāng)前字典中是否存在索引值為CODE的元素;如果在當(dāng)前字典中不存在索引值為CODE的元素時(shí),將所述標(biāo)志變量flag賦值為true,輸出變量FINchar的值,將變量OLDcode賦值給元素索引值C0DE,并將字典中OLDcode和FINchar構(gòu)成的字符串的索引值賦給INcode ;如果在當(dāng)前字典中存在前綴字符串《,能夠使得所對(duì)應(yīng)的索引值為CODE時(shí),則將Q的值壓入堆棧,并將前綴字符串《的索引賦值給C0DE,同時(shí)設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);所述密鑰流由分段線性混沌映射迭代得到,設(shè)定當(dāng)前字典中含有I個(gè)元素,在字典中的元素索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index,
      =;交換字典中Z和index兩個(gè)位置的元素值;B7、找到索引值CODE在字典中所對(duì)應(yīng)的元素Q,輸出Q并將Q賦值給變量FINchar ;B8、判斷堆棧是否為空;當(dāng)堆棧不為空時(shí),按照后進(jìn)先出的原則循環(huán)輸出堆棧頂部的元素;B9、將(OLDcode,Q)加入當(dāng)前字典;B10、判斷flag的值,當(dāng)flag的值為true時(shí),設(shè)定當(dāng)前字典中含有I個(gè)元素,(OLDcode, Q)在字典中的索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index,計(jì)算index = [1 xKa\ ;交換字典中Z和index兩個(gè)位置的元素值。B11、將INcode賦值給OLDcode,然后繼續(xù)執(zhí)行步驟S4,直到數(shù)據(jù)流讀取完畢。步驟六、輸出GIF明文圖像。為了驗(yàn)證提出的本文所提加密算法的正確性和安全性,我們采用國(guó)際上通用的USC-SIPI圖像測(cè)試庫對(duì)算法進(jìn)行了測(cè)試和驗(yàn)證,由于圖片庫中的圖像默認(rèn)是tiff格式,將其轉(zhuǎn)換成gif格式后進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明本文提出的加密算法達(dá)到了較好的安全性,在此以一幅大小為256X256的Lena圖像為例。圖4是原始圖像效果圖,圖5為利用加密算法加密后的結(jié)果,圖6為正常解碼后的圖像。從圖5我們可以看出加密后的圖片呈均勻噪聲分布,不能分辨出任何關(guān)于明文圖像的有意義的信息,而通過對(duì)比圖4與圖6,說明在給定正確密鑰的情況下解碼算法能夠精確恢復(fù)出明文圖像。統(tǒng)計(jì)分析是試圖利用密文統(tǒng)計(jì)特性恢復(fù)出明文信息,為了能夠抵擋攻擊者采用統(tǒng)計(jì)手段破解編碼信息,加密后的圖像應(yīng)具有均勻的直方圖,并且密文圖像相鄰兩像素的相關(guān)性也必須盡可能的低,本實(shí)驗(yàn)分別對(duì)明文和密文圖像的直方圖,及其相鄰像素的相關(guān)性進(jìn)行了測(cè)試。圖7為明文圖像的直方圖,圖8為密文圖像的直方圖,通過對(duì)比,明文直方圖的分布有多處峰值,而密文的直方圖已有了很大改善,在相關(guān)性測(cè)試中,測(cè)試了水平、垂直和對(duì)角三個(gè)方向上兩個(gè)相鄰像素之間的相關(guān)性。對(duì)實(shí)驗(yàn)圖像分別隨機(jī)取出1000對(duì)像素點(diǎn)進(jìn)行測(cè)試,根據(jù)圖9至圖11可以看出,明文圖像中相鄰像素值呈帶狀分布,且測(cè)得其相關(guān)系數(shù)都在0.9以上,具有很高的相關(guān)性。而根據(jù)圖12至圖14可以看出,密文圖像中相鄰像素值的分布比較均勻,且測(cè)得其相關(guān)性在0. 02左右,因此可以看出按照本發(fā)明得到的密文圖像中相鄰像素的相關(guān)性已經(jīng)非常小,滿足安全性要求。以上詳細(xì)描述了本發(fā)明的較佳具體實(shí)施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)人員無 需創(chuàng)造性勞動(dòng)就可以根據(jù)本發(fā)明的構(gòu)思作出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過邏輯分析、推理或者有限的實(shí)驗(yàn)可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護(hù)范圍內(nèi)。
      權(quán)利要求
      1.一種基于壓縮編碼的GIF圖像加密方法,其特征在于包括以下步驟 步驟一、輸入GIF明文圖像; 步驟二、對(duì)GIF圖像的顏色列表進(jìn)行加密或/和對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼加密 步驟三、輸出GIF密文圖像; 所述對(duì)GIF圖像的顏色列表進(jìn)行加密按以下步驟進(jìn)行 設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);設(shè)定GIF圖像的顏色列表中各顏色分量為 T (x,y),T (x,y) G [O,255],x、y 均為整數(shù)且 x G [O,255],y G
      ; 將密鑰流中的值Kn乘以255后取整,得到Kn';設(shè)定加密后GIF圖像的顏色列表為T/ (x,y);計(jì)算r(x,.v) = r(u) KV得到加密后GIF圖像的顏色列表; 所述對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼加密按以下步驟進(jìn)行 51、初始化字典,對(duì)所述字典進(jìn)行置亂; 52、讀取輸入字符,并將該輸入字符賦值給前綴字符串《,直到數(shù)據(jù)流讀完,當(dāng)數(shù)據(jù)流讀取完時(shí),輸出《在字典中所對(duì)應(yīng)的元素索引值; 53、判斷當(dāng)前字典中是否存在《Q,Q為輸入字符;當(dāng)前字典中存在時(shí),將的值放入《的隊(duì)列清單;當(dāng)前字典中不存在時(shí),輸出《在所述字典中所對(duì)應(yīng)的元素索引值; 54、設(shè)定密鑰流為K=IKnI 0〈Kn〈l},n為正整數(shù);設(shè)定當(dāng)前字典中含有I個(gè)元素,設(shè)定當(dāng)前匹配的元素索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index ;當(dāng)隊(duì)列清單不為空時(shí),取出隊(duì)列清單中隊(duì)首的值賦給Z ;計(jì)算"Kfex = Px K1J ;交換字典中Z和index兩個(gè)位置的元素值,直到隊(duì)列清單為空; 55、設(shè)置字符串變量S,初始時(shí)所述字符串變量S為空;當(dāng)有字符串string需要加入到字典中時(shí),判斷S是否為空;當(dāng)S為空時(shí),將string賦值給S ;當(dāng)S不為空時(shí),將S插入到字典中,然后將string賦值給S。
      2.如權(quán)利要求I所述的基于壓縮編碼的GIF圖像加密方法,其特征是所述步驟SI中對(duì)所述字典進(jìn)行置亂按以下步驟進(jìn)行 Al、初始化字典,使所述字典包含所有單個(gè)字符; A2、設(shè)定當(dāng)前需要置亂的元素索引為i,將i的值初始化為當(dāng)前字典中含有的元素?cái)?shù)目I ; A3、計(jì)算r = |j X K n」,r為隨機(jī)數(shù);交換字典中i和r兩個(gè)位置的元素; A4、計(jì)算i' =1-1;當(dāng)1'彡2時(shí),返回執(zhí)行步驟A2,否則結(jié)束置亂。
      3.如權(quán)利要求I所述的基于壓縮編碼的GIF圖像加密方法,其特征在于還包括基于壓縮編碼的GIF圖像解密步驟 第一步、輸入GIF密文圖像; 第二步、對(duì)GIF圖像的顏色列表進(jìn)行解密或/和對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼解密 第三步、輸出GIF明文圖像; 所述對(duì)GIF圖像的顏色列表進(jìn)行解密按以下步驟進(jìn)行設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);設(shè)定GIF圖像的顏色列表中加密后的各顏色分量為T/ (x,y),x、y均為整數(shù)且x G [O,255], y G
      ; 將密鑰流中的值Kn乘以255后取整,得到Kn';設(shè)定解密后GIF圖像的顏色列表為T (x,y),T (x,y) G
      ;計(jì)算r(x,.y) = T'(x,y) 得到解密后 GIF 圖像的顏色列表;所述對(duì)GIF圖像的圖像數(shù)據(jù)進(jìn)行LZW編碼解密按以下步驟進(jìn)行 B1、初始化字典,對(duì)所述字典進(jìn)行置亂; B2、讀取第一個(gè)輸入碼字,并將該輸入碼字分別賦值給記錄當(dāng)前碼字和上一次讀入的碼字的變量CODE和OLDcode ;所述變量CODE為當(dāng)前碼字的變量,所述變量OLDcode為上一次讀入的碼字; B3、在當(dāng)前字典中找到索引為CODE的元素Q,輸出Q并將Q賦值給變量FINchar,所述變量FINchar為用以記錄當(dāng)前輸出的最后一個(gè)字符的變量; B4、讀取下一個(gè)輸入碼字,并將該輸入碼字分別賦值給變量CODE和記錄當(dāng)前輸入碼字的備份的變量INcode ; B5、設(shè)置標(biāo)志變量flag,所述標(biāo)志變量flag的初始值為false ; B6、判斷當(dāng)前字典中是否存在索引值為CODE的元素; 在當(dāng)前字典中不存在索引值為CODE的元素時(shí),將所述標(biāo)志變量flag賦值為true,輸出變量FINchar的值,將變量OLDcode賦值給元素索引值CODE,并將字典中OLDcode和FINchar構(gòu)成的字符串的索引值賦給INcode ;在當(dāng)前字典中存在前綴字符串《,能夠使得《Q所對(duì)應(yīng)的索引值為CODE時(shí),則將Q的值壓入堆棧,并將前綴字符串《的索引賦值給CODE,同時(shí)設(shè)定密鑰流為K=IKn I 0〈Kn〈l},n為正整數(shù);設(shè)定當(dāng)前字典中含有I個(gè)元素,《 Q在字典中的元素索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index,計(jì)算= |_1 XK1J ;交換字典中Z和index兩個(gè)位置的元素值;B7、找到索引值CODE在字典中所對(duì)應(yīng)的元素Q,輸出Q并將Q賦值給變量FINchar ; B8、判斷堆棧是否為空;當(dāng)堆棧不為空時(shí),按照后進(jìn)先出的原則循環(huán)輸出堆棧頂部的元素; B9、將(OLDcode,Q)加入當(dāng)前字典; B10、判斷flag的值,當(dāng)flag的值為true時(shí),設(shè)定當(dāng)前字典中含有I個(gè)元素,(OLDcode,Q)在字典中的索引值為Z,設(shè)定一個(gè)隨機(jī)產(chǎn)生的元素索引值為index,計(jì)算=交換字典中Z和index兩個(gè)位置的元素值。
      B11、將INcode賦值給OLDcode,然后繼續(xù)執(zhí)行步驟S4,直到數(shù)據(jù)流讀取完畢。
      4.如權(quán)利要求3所述的基于壓縮編碼的GIF圖像加密方法,其特征是所述步驟BI中對(duì)所述字典進(jìn)行置亂按以下步驟進(jìn)行 Cl、初始化字典,使所述字典包含所有單個(gè)字符; C2、設(shè)定當(dāng)前需要置亂的元素索引為i,將i的值初始化為當(dāng)前字典中含有的元素?cái)?shù)目Ien ; C3、計(jì)算r = [i× X K n」,r為隨機(jī)數(shù);交換字典中i和r兩個(gè)位置的元素; C4、計(jì)算i' =i-l;當(dāng)i'≥2時(shí),返回執(zhí)行步驟C2,否則結(jié)束置亂。
      5.如權(quán)利要求I或3所述的基于壓縮編碼的GIF圖像加密方法,其特征是所述密鑰流由分段線性混沌映射迭代得到。
      全文摘要
      本發(fā)明公開了一種基于壓縮編碼的GIF圖像加密方法,屬于數(shù)字圖像加密領(lǐng)域,該算法通過選擇GIF圖像中的顏色列表和LZW壓縮編碼數(shù)據(jù)進(jìn)行加密。對(duì)顏色列表加密時(shí),利用密鑰流對(duì)顏色列表中各顏色分量的值進(jìn)行混淆,從而能夠隱藏明文圖像顏色索引的信息;對(duì)LZW編碼數(shù)據(jù)進(jìn)行加密時(shí),則根據(jù)LZW壓縮的特點(diǎn),選擇在字典詞條匹配時(shí)對(duì)編碼所用的字典進(jìn)行置亂,使得置亂算法能夠根據(jù)明文特性自適應(yīng)地動(dòng)態(tài)調(diào)整加密的強(qiáng)度,具有更好的加密效率和安全性。本發(fā)明結(jié)合GIF壓縮編碼設(shè)計(jì)加密算法,同時(shí)考慮了GIF圖像顏色索引和圖像壓縮數(shù)據(jù)的安全性,并對(duì)其分別進(jìn)行加密,具有較好的安全性。在引入加密操作后對(duì)GIF圖像壓縮效果沒有任何影響,并且在引入加密操作后保持了原GIF圖像的格式兼容性。
      文檔編號(hào)H04N7/26GK102970530SQ20121040724
      公開日2013年3月13日 申請(qǐng)日期2012年10月23日 優(yōu)先權(quán)日2012年10月23日
      發(fā)明者向濤, 王安, 肖迪, 周慶, 楊吉云 申請(qǐng)人:重慶大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1