本發(fā)明涉及信息隱藏技術(shù)領(lǐng)域,特別是一種基于改進(jìn)Arnold變換和LSB的圖像信息加密及解密方法。
背景技術(shù):
信息隱藏技術(shù)(Steganography technique)是信息安全研究領(lǐng)域里面對于圖像加密隱藏的一種技術(shù)。同時(shí)也是計(jì)算機(jī)應(yīng)用領(lǐng)域中的其中一個(gè)典型的隱秘通道問題的解決方案,在軍事領(lǐng)域,信息偽裝等信息加密傳輸領(lǐng)域有著廣泛的應(yīng)用。
針對信息隱藏技術(shù)這一問題,現(xiàn)階段主要有時(shí)空域算法和變換域算法兩種解決方案。但是兩者由于本身固有的缺點(diǎn),并不能很好的直接用于圖像信息隱藏的實(shí)際應(yīng)用中。時(shí)空域主要缺點(diǎn)是隱藏的信息容易被檢測出來,而變換域雖然加密技術(shù)相對較好,但是信息隱藏的容量小,而且受制于圖像的像素分布。
圖像信息隱藏技術(shù)雖然研究廣泛,但是目前為止尚未有一種完美的解決方案,而且對于不同的應(yīng)用場景采用的隱藏方案也不同。2007年,邵利平等人在《二維非等長圖像置亂變換》一文中討論了改進(jìn)的Arnold變換用于非等長圖像加密變換的幾種算法;2012年,夏煜等人在《基于圖像的信息隱藏分析技術(shù)綜述》一文中則討論了現(xiàn)階段圖像隱藏分析技術(shù)的發(fā)展,對于嵌入了隱秘信息的圖像的探測的方法做了介紹。目前圖像的信息隱藏目的主要是防止被檢測、被破解出來;但如何做好防檢測、防破解是目前還亟待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是克服現(xiàn)有技術(shù)的不足,而提供一種基于改進(jìn)Arnold變換和LSB的圖像信息加密及解密方法,利用改進(jìn)的Arnold變換對需要隱寫的隱藏信息圖像進(jìn)行變換,然后利用LSB算法將隱藏信息圖像嵌入到背景圖像中生成加密后圖像,加密后圖像與背景圖像從肉眼上無法分辨;解密時(shí)僅需加密后圖像便可分理出隱藏信息圖像。
本發(fā)明為解決上述技術(shù)問題采用以下技術(shù)方案:
根據(jù)本發(fā)明提出的一種基于改進(jìn)Arnold變換和LSB的圖像信息加密及解密方法,包括以下步驟:
步驟1、加載背景圖像,并計(jì)算出該背景圖像可容納的最大像素?cái)?shù);若隱藏信息圖像的像素?cái)?shù)超過最大像素?cái)?shù),則用戶對隱藏信息圖像進(jìn)行裁剪;
步驟2、采用改進(jìn)的Arnold變換對隱藏信息圖像進(jìn)行預(yù)處理;具體如下:
步驟2.1)、用戶輸入2個(gè)密鑰的數(shù)值key1、key2,key1和key2均為正整數(shù);
步驟2.2)、用戶選擇下述加密方式中的任一種對隱藏信息圖像進(jìn)行加密:
第一種加密方式:每個(gè)隱藏信息圖像像素的新的坐標(biāo)為(x′,y′),其中:x′=(x+key2*y),y′=y(tǒng);
第二種加密方式:每個(gè)隱藏信息圖像像素的新的坐標(biāo)為(x′,y′),其中,x′=x,y′=(key2*x+y);其中,(x,y)是需要加密的隱藏信息圖像的原始像素坐標(biāo);
然后x′、y′分別對隱藏信息圖像的寬度A.width和高度A.height進(jìn)行取余運(yùn)算:x″=x′mod A.width;y″=y(tǒng)′mod A.height;
步驟2.3)、將原來坐標(biāo)為(x,y)的像素點(diǎn)搬移到新的像素點(diǎn)(x″,y″)處;
步驟2.4)、重復(fù)執(zhí)行步驟2.2)-步驟2.3)key1次;
步驟3、將隱藏信息圖像的尺寸存儲在背景圖像的開頭;
步驟4、將經(jīng)過步驟2預(yù)處理后的隱藏信息圖像使用LSB算法嵌入到背景圖像中,從而生成加密后的圖像;
步驟5、提取隱藏信息圖像尺寸;
步驟6、由LSB算法提取隱藏信息圖像;
步驟7、用戶輸入密鑰并對提取后的隱藏信息圖像進(jìn)行Arnold反變換解密,從而恢復(fù)了隱藏信息圖像的原始數(shù)據(jù)。
作為本發(fā)明所述的一種基于改進(jìn)Arnold變換和LSB的圖像信息加密及解密方法進(jìn)一步優(yōu)化方案,所述步驟3具體如下:
步驟3.1)、遍歷背景圖像的前4個(gè)像素,每個(gè)像素包含3個(gè)字節(jié);首先將隱藏信息圖像的高度A.height每2bit一組拆分,按照順序直接替換背景圖像中前6個(gè)字節(jié)中每個(gè)字節(jié)的最末2bit;
步驟3.2)、將隱藏圖像A的寬度A.width每2bit一組拆分,按照順序直接替換背景圖像中后6個(gè)字節(jié)中每個(gè)字節(jié)的最末2bit。
作為本發(fā)明所述的一種基于改進(jìn)Arnold變換和LSB的圖像信息加密及解密方法進(jìn)一步優(yōu)化方案,所述步驟4具體如下:
步驟4.1)、跳過背景圖像的前4個(gè)像素的隱藏信息圖像的尺寸存儲區(qū),對隱藏信息圖像進(jìn)行LSB加密;設(shè)初始迭代次數(shù)i=1;
步驟4.2)、依次取出隱藏信息圖像中的第i個(gè)字節(jié),將該字節(jié)的最高2bit存放在背景圖像的第(4+i)個(gè)像素的第1個(gè)字節(jié)的末2bit中,直接替換掉背景圖像的第(4+i)個(gè)像素第1個(gè)字節(jié)的末2bit;
步驟4.3)、然后取出該字節(jié)的第6位、第5位的數(shù)據(jù)放在背景圖像的第(4+i)個(gè)像素的第2個(gè)字節(jié)的末2bit中;
步驟4.4)、當(dāng)i小于隱藏信息圖像的所有字節(jié)數(shù)量,則i=i+1,重復(fù)步驟4.2)-步驟4.4);直到將隱藏信息圖像的所有字節(jié)全部被放入背景圖像中,這樣就生成加密后圖像。
作為本發(fā)明所述的一種基于改進(jìn)Arnold變換和LSB的圖像信息加密及解密方法進(jìn)一步優(yōu)化方案,所述步驟5具體如下:
步驟5.1)、加載加密后圖像到內(nèi)存;
步驟5.2)、提取出加密后圖像的前4個(gè)像素?cái)?shù)據(jù),其中,根據(jù)加密原理,前2個(gè)像素為圖像的高度數(shù)據(jù),后2個(gè)像素為圖像的寬度數(shù)據(jù);前2個(gè)像素中,每個(gè)像素按照順序直接提取其中每個(gè)字節(jié)的最末2bit,然后拼接在一起形成12bit的數(shù)值,該數(shù)值就是隱藏信息圖像的高度數(shù)值A(chǔ).height;
步驟5.3)、提取出加密后圖像的前4個(gè)像素中的后2個(gè)像素?cái)?shù)據(jù),后2個(gè)像素中,每個(gè)像素按照順序直接提取其中每個(gè)字節(jié)的最末2bit,并按順序直接拼接成12bit的數(shù)值,該數(shù)值就是隱藏信息圖像的寬度數(shù)值A(chǔ).width。
作為本發(fā)明所述的一種基于改進(jìn)Arnold變換和LSB的圖像信息加密及解密方法進(jìn)一步優(yōu)化方案,所述步驟6具體如下:
步驟6.1)、跳過加密后圖像的前4個(gè)像素;
步驟6.2)從加密后的圖像的第5個(gè)像素開始,將每個(gè)像素的每個(gè)字節(jié)的最末2bit提取出來按照順序拼接,最終生成帶有改進(jìn)Arnold變換后的隱藏信息圖像。
作為本發(fā)明所述的一種基于改進(jìn)Arnold變換和LSB的圖像信息加密及解密方法進(jìn)一步優(yōu)化方案,所述步驟7具體如下:
步驟7.1)、如果是第一種加密方式,則根據(jù)公式x1=(x″-key2*y″),y1=y(tǒng)″進(jìn)行圖像Arnold反變換解密;如果是第二種加密方式,則根據(jù)公式x1=x″,y1=(-key2*x″+y″)進(jìn)行圖像Arnold反變換解密;
步驟7.2)、然后x1,y1分別對隱藏信息圖像的寬度A.width和高度A.height進(jìn)行取余運(yùn)算:x=x1 mod A.width,y=y(tǒng)1mod A.height;如果x<0則x=x+A.width,如果y<0則y=y(tǒng)+A.height;
步驟7.3)、重復(fù)執(zhí)行步驟7.1)到步驟7.2)key1次,這樣就恢復(fù)了隱藏信息圖像的原始數(shù)據(jù)。
本發(fā)明采用以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果:
(1)將Arnold變換用于圖像信息隱藏技術(shù)當(dāng)中;
(2)使用LSB算法結(jié)合Arnold變換嵌入圖像,使得隱藏的信息容量更大,而且由于圖像變換后呈現(xiàn)無規(guī)則排列,因此難以被檢測到包含隱藏信息;
(3)用戶通過3個(gè)密鑰的形式加密,大大加強(qiáng)了信息的保密性;
(4)加密后圖像具有一定的防破壞能力,損失一定的像素信息隱藏信息圖像仍然能夠被恢復(fù);
(5)采用改進(jìn)的Arnold變換算法,可以對非等長的圖像進(jìn)行加密,傳統(tǒng)Arnold只能對矩形圖像進(jìn)行加密置亂。
附圖說明
圖1是本發(fā)明的加解密示意圖。
圖2是本發(fā)明的加密過程的流程圖。
圖3是本發(fā)明的解密過程的流程圖。
圖4為本方法使用的LSB存儲數(shù)據(jù)的邏輯圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。
為了方便敘述,簡單定義算法中的主要變量為:隱藏信息圖像A,背景圖像B,嵌入后生成的加密后圖像C,其中用height表示圖像的高度,width表示圖像的寬度,A.width表示A圖像的寬度,A.height表示A圖像的高度。B、C圖像亦同。其中用戶需要輸入的密鑰有兩個(gè),密鑰key1以及密鑰key2,加密位置為1號或2號;
圖1是本發(fā)明的加解密示意圖,本方法首先運(yùn)用改進(jìn)的Arnold變換對圖像進(jìn)行預(yù)處理,然后將其用LSB算法嵌入在背景圖像中構(gòu)造出含有加密圖像的新圖像。加密過程主要分為四大步驟:計(jì)算出背景圖像能夠容納的信息量、輸入密鑰,并使用改進(jìn)的Arnold變換對隱藏信息圖像進(jìn)行預(yù)處理、存儲隱藏信息圖像的尺寸、使用LSB算法將隱藏信息圖像嵌入到背景圖像中。解密過程主要分為三大步驟:提取隱藏信息圖像尺寸、由LSB算法提取隱藏信息圖像、輸入密鑰并對提取后的隱藏信息圖像進(jìn)行Arnold反變換解密。
圖2是本發(fā)明的加密過程的流程圖,加密步驟為:
步驟1)加載背景圖像B,并估算出該背景圖像B能夠容納多大的隱藏信息:
步驟1.1)由公式計(jì)算出可容納的隱藏信息圖像的最大像素?cái)?shù);
步驟1.2)如果隱藏信息圖像A的像素?cái)?shù)沒有超過上一步驟計(jì)算出來的最大像素?cái)?shù),則執(zhí)行下一步,否則,需要用戶對隱藏信息圖像A進(jìn)行裁剪。
步驟2)使用改進(jìn)的Arnold變換對隱藏信息圖像A進(jìn)行預(yù)處理:
步驟2.1)用戶輸入2個(gè)密鑰的數(shù)值,key1和key2,均為正整數(shù);
步驟2.2)用戶選擇加密位置為1號或者2號;key1,key2和加密位置用戶不能丟失,還原圖像時(shí)需要三個(gè)值全部正確才能恢復(fù);其中key1作為Arnold變換的變換次數(shù);
步驟2.3)對隱藏信息圖A像采取改進(jìn)后的Arnold變換,如果用戶選擇加密位置為1號位置,則每個(gè)圖像像素的新的x坐標(biāo)和新的y坐標(biāo)計(jì)算公式為:x′=(x+key2*y),y′=y(tǒng),如果用戶選擇加密位置為2號位置,則每個(gè)圖像像素的新的x坐標(biāo)和新的y坐標(biāo)計(jì)算公式為:x′=x,y′=(key2*x+y),然后x′、y′分別對隱藏信息圖像的寬度A.width和高度A.height進(jìn)行取余運(yùn)算:x″=x′mod A.width;y″=y(tǒng)′mod A.height;
步驟2.4)求出新的坐標(biāo)(x″,y″)后,將原來的(x,y)坐標(biāo)的像素點(diǎn)搬移到新的像素點(diǎn)(x″,y″)處;
步驟2.5)按照key1的數(shù)值大小重復(fù)執(zhí)行步驟2.3)到步驟2.4)key1次;
步驟3)將隱藏信息圖像A的尺寸存儲在背景圖像B的開頭:
步驟3.1)遍歷背景圖像B前4個(gè)像素,由于圖像加載到內(nèi)存后每個(gè)像素包含3字節(jié),分別對應(yīng)B通道,G通道,R通道(藍(lán)通道,綠通道,紅通道)。因此前4像素共計(jì)12字節(jié)。由于修改每個(gè)字節(jié)的最末2bit并不影響圖像的質(zhì)量,用戶肉眼無法分辨,因此,每個(gè)字節(jié)的最末2bit可以用來存儲數(shù)據(jù)。首先將隱藏信息圖像A的寬度A.height存入前2個(gè)像素(即前6字節(jié)),其中每個(gè)字節(jié)可存2bit數(shù)據(jù),因此共計(jì)12bit,最高可存212-1=4095像素高度,存儲方式為將隱藏信息圖像A的高度A.height每2bit一組拆分,按照順序直接替換背景圖像前6字節(jié)的每字節(jié)最末2bit;
步驟3.2)將隱藏圖像A的寬度A.width存入后2個(gè)像素(即后6字節(jié)),其中和前6字節(jié)一樣,每個(gè)字節(jié)2bit數(shù)據(jù),因此共計(jì)12bit,最高存212-1=4095像素高度的隱藏信息圖像。存儲方式和步驟3.1)中隱藏信息圖像A的高度A.height存儲方式一樣;
步驟4)將經(jīng)過Arnold變換后的隱藏信息圖像A嵌入到背景圖像B中:
步驟4.1)跳過背景圖像B的前4個(gè)像素的隱藏圖像A尺寸存儲區(qū),開始對圖像進(jìn)行LSB加密。首先取出隱藏圖像A的1個(gè)字節(jié)(8bit)(記為t),將該t字節(jié)最高2bit存放在背景圖像B的第5像素的第1個(gè)字節(jié)的末2bit中,直接替換掉背景圖像B的第5像素第1個(gè)字節(jié)的末2bit。
步驟4.2)然后取出t的次高2bit,即其6、5位數(shù)據(jù)放在背景圖像的第5像素的第2個(gè)字節(jié)的末2bit中,以此類推,直到將隱藏信息圖像A的所有字節(jié)全部放入背景圖像中。這樣就生成加密后圖像C。
步驟5)將加密后圖像C保存。
圖3是本發(fā)明的解密過程的流程圖,解密步驟為:
步驟1)提取隱藏信息圖像尺寸:
步驟1.1)加載加密后圖像C到內(nèi)存。
步驟1.2)提取出加密后圖像C的前4像素?cái)?shù)據(jù),其中,根據(jù)加密原理,前2像素為圖像的高度數(shù)據(jù),后2像素為圖像的寬度數(shù)據(jù)。前2個(gè)像素中,每個(gè)像素按照順序直接提取其中每個(gè)字節(jié)的最末2bit,然后拼接在一起形成12bit的數(shù)值,該數(shù)值就是隱藏信息圖像的高度數(shù)值A(chǔ).height;
步驟1.3)提取出加密后圖像C的前4像素中的后2像素?cái)?shù)據(jù)并按照步驟1.2)的方法提取其中每個(gè)字節(jié)的最末2bit按順序直接拼接成12bit的數(shù)值,該數(shù)值就是隱藏信息圖像的寬度數(shù)值A(chǔ)width;
步驟2)提取隱藏信息圖像:
步驟2.1)跳過加密后圖像的前4像素;
步驟2.2)從第5像素點(diǎn)開始,每個(gè)像素點(diǎn)(3個(gè)字節(jié))的每個(gè)字節(jié)的最末2bit提取出來拼接;首先第5像素的第1個(gè)字節(jié)提取最末2bit數(shù)據(jù)到隱藏信息圖像A的第1個(gè)像素的第1字節(jié)的7、8位;
步驟2.3)提取第5像素第2字節(jié)的最末2bit數(shù)據(jù)到隱藏信息圖像A的第1個(gè)像素的第1字節(jié)的5、6位,
步驟2.4)以此類推,提取完隱藏信息圖像A第1個(gè)像素的第1字節(jié)之后(8bit對應(yīng)1個(gè)字節(jié)),提取第2字節(jié),還是按照順序提取,直到所有的隱藏信息圖像的像素點(diǎn)提取完畢,隱藏信息圖像的尺寸就是步驟1.2)和步驟1.3)提取出來的尺寸;最終生成帶有改進(jìn)Arnold變換后的隱藏信息圖像A;
步驟3)對提取后的隱藏信息圖像A進(jìn)行Arnold反變換解密:
步驟3.1)用戶輸入2個(gè)密鑰key1、key2和一個(gè)加密位置;
步驟3.2)如果是1號位置,則根據(jù)公式x1=(x″-key2*y″),y1=y(tǒng)″進(jìn)行圖像Arnold反變換解密,如果是2號位置則根據(jù)公式x1=x″,y1=(-key2*x″+y″)進(jìn)行圖像Arnold反變換解密;
步驟3.3)然后x1,y1分別對隱藏信息圖像的寬度A.width和高度A.height進(jìn)行取余運(yùn)算:x=x1 mod A.width;y=y(tǒng)1 mod A.height;如果x<0則x=x+A.width,如果y<0則y=y(tǒng)+A.height;
步驟3.4)按照密鑰key1的數(shù)值重復(fù)執(zhí)行步驟3.2)到步驟3.3)key1次,這樣就恢復(fù)了隱藏信息圖像的原始數(shù)據(jù);
步驟4)將隱藏信息圖像保存下來,恢復(fù)工作完成。
上面結(jié)合附圖對本發(fā)明的實(shí)施方式作了詳細(xì)說明,但是本發(fā)明并不限于上述實(shí)施方式,在本領(lǐng)域普通技術(shù)人員所具備的知識范圍內(nèi),還可以在不脫離本發(fā)明宗旨的前提下做出各種變化。
圖4是本發(fā)明的解密過程中的LSB算法核心思想:
可以看出,本發(fā)明LSB算法解密思想是取出每個(gè)像素的每個(gè)字節(jié)的最末位2bit數(shù)據(jù)將他們用需要嵌入的數(shù)據(jù)用二進(jìn)制的形式替換掉。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍內(nèi)。