一种基于EMD-3的多载体密图分存和重构方法与流程

文档序号:17881550发布日期:2019-06-13 10:44阅读:290来源:国知局
一种基于EMD-3的多载体密图分存和重构方法与流程

本发明属于图像信息安全和数字图像信号处理交叉领域,涉及一种密图分存重构方法,特别涉及一种基于EMD-3的多载体密图分存和重构方法。



背景技术:

近年来,伴随着计算机和网络技术的发展,越来越多的图像在网络中传输,在给用户提供方便的同时,也带来了一系列的安全隐患。对图像信息不当使用和恶意篡改,不仅会涉及个人隐私,也会给社会带来严重的负面影响。

针对数字图像信息安全,人们已提出了多种方法,如:①将明文图像转换为密文图像的数字图像加密技术;②将机密图像隐藏于非相关载体中的数字图像隐写技术;③给图像添加版权认证标识,对图像真实性和完整性,来源者和使用者进行认证的数字图像水印技术;④结合现有技术特点对图像的真实性和完整性进行甄别的数字图像盲取证技术以及⑤将机密图像拆分为影子图像,利用分发影子图像重构秘密图像的数字图像信息分存技术。

其中,对重要图像信息进行安全保护的数字图像信息分存技术已成为当前图像信息安全的研究热点。传统的图像分存方案只是将秘密图像转换为无意义影子图像,这在公有信道传输中容易诱发攻击而使分发影子图像遭受破坏,从而降低秘密图像最终正确重构的可能性。针对无意义图像分存方案在使用过程中存在的安全隐患,一些文献也探讨了有意义图像分存。

针对有意义分存,Lin,2004(Lin CC,Tsai WH.Secret image sharing with steganography and authentication.The Journal of Systems and Software,2004,73(3):405–414.)将秘密图像每个像素的8位分存信息嵌入到载体图像对应的2×2分块的左下,右下和右上像素中。Yang,2007(Yang CN,Chen TS,Yu KH,Wang CC.Improvements of image sharing with steganography and authentication.The Journal of Systems and Software,2007,80(7):1070-1076.)用GF(28)替代GF(251)、并通过调整2×2分存信息的嵌入结构来嵌入秘密像素分存信息。Chang,2008(Chang CC,Hsieh YP,Lin CH.Sharing secrets in stego images with authentication.Pattern Recognition,2008,41(10):3130–3137.)将8位分存信息嵌入到载体图像对应的2×2分块所有像素的低3位中。为提高载体图像的视觉质量,Wu,2011(Wu CC,Kao SJ,Hwang MS.A high quality image sharing with steganography and adaptive authentication scheme.The Journal of Systems and Software,2011,84(12):2196-2207.)对传统的LSB嵌入方法进行改进,通过调整像素的第4个低位来减小嵌入信息后的像素与原始像素的差值以获得更高的视觉嵌入质量。为提升嵌入后载体的视觉质量,Eslami,2010(Eslami Z,Razzaghi SH,Zarepour AJ.Secret image sharing based on cellular automata and steganography.Pattern Recognition,2010,43(1):397-404.)等仅对载体图像所有2×2分块的1/2分块的低2位按LSB法嵌入分存信息。Chang,2011(Chang CC,Chen YH,Wang HC.Meaningful secret sharing technique with authentication and remedy abilities.Information Sciences,2011,181(14):3073–3084.)和Chen,2012(Chen YH,Chang CC.Image Tamper Detection and Recovery Based on Dual Watermarks Sharing Strategy.Journal of Digital Information Management,2012,10(1):39–49.)引入了像素配对,将分存信息嵌入到载体图像的2×2分块中以提高攻击后修复能力。为获得更强的攻击后修复能力,Wu,2013(Wu XT,Sun W.Secret image sharing scheme with authentication and remedy abilities based on cellular automata and discrete wavelet transform.The Journal of Systems and Software,2013,86(4):1068-1088.)引入了备份图像,将两个8位秘密像素和2个4位备份图像像素对应的分存信息和认证信息用LSB法嵌入到载体图像对应2×4分块的低2位中。

在所申请的发明专利:邵利平,2014a(邵利平,欧阳显斌.一种基于三重备份的(K,N)有意义图像分存及恢复方法[P].中国,中华人民共和国国家知识产权局,发明专利,201410728893.1,2014.)通过引入三重备份将秘密图像像素分存信息存储在不同的三个位置起相互认证作用,在恢复阶段使用自然图像相邻像素相关性来提升方案的认证能力和错误修复能力,但所提方法分发载体是密图大小的4倍,存在着像素扩张。

在所申请的发明专利:邵利平,2015a(邵利平,欧阳显斌.基于GF(27)有限域和双重认证的有意义(K,N)图像分存重构方法[P].中国,中华人民共和国国家知识产权局,发明专利,2015010920369.9,2015)我们给出了一种基于GF(27)有限域和双重认证的有意义(K,N)图像分存和重构方法,引入了备份图像,双重认证和自修复策略,但所提方法分发载体依然是密图大小的4倍,存在着像素扩张。

以上所给出的有意义图像分存方案:Lin,2004、Yang,2007、Chang,2008、Wu,2011、Eslami,2011、Chang,2011、Chen,2012、Wu,2013、邵利平,2014a和邵利平,2015a都是将秘密像素嵌入到载体图像的2×2或2×4分块中或采用4倍密图大小的载体,因此不可避免地导致像素扩张。

为避免像素扩张,在所申请的发明专利:邵利平,2014b(邵利平,欧阳显斌.基于差值变换的(K,N)有意义图像分存及恢复方法,中国,中华人民共和国国家知识产权局,发明专利,201410438803.5,2014)和所发表的论文:邵利平,2015b(欧阳显斌,邵利平,陈文鑫.结合调整差值变换的(K,N)有意义图像分存方案[J].中国图象图形学报,2015,20(5):633-642)我们给出了基于调整差值变换的图像分存方法,采用调整差值变换将密图转换为差值图和位置图分别进行分存,避免了载体图像扩张。在所申请的发明专利:邵利平,2015c(邵利平,欧阳显斌.一种基于GF(23)的(K,N)有意义无扩张图像分存和重构方法,中国,中华人民共和国国家知识产权局,发明专利,201510283407.4,2015)和所发表的论文:邵利平,2015d(欧阳显斌,邵利平.一种基于GF(2^3)的(K,N)有意义无扩张图像分存方案[J].计算机科学,2015,42(12):251-256.)我们给出了一种基于GF(23)的(K,N)有意义无扩张图像分存和重构方法,引入了对秘密像素的认证策略,将秘密像素以及对秘密像素进行认证的信息嵌入到与密图等大的载体图像中。

以上所给出的有意义图像分存方案:邵利平,2014b、邵利平,2015b、邵利平,2015c和邵利平,2015d尽管使用和密图等大的载体图像进行分存,没有扩张,但同传统的有意义图像分存方案:Lin,2004、Yang,2007、Chang,2008、Wu,2011、Eslami,2011、Chang,2011、Chen,2012、Wu,2013、邵利平,2014a和邵利平,2015a相类似,通常是采用LSB来对分存信息进行嵌入,对载体的视觉质量影响较大。

为提高载体的视觉掩蔽效应,结合纸张印刷中的半色调技术,吴小天,2011(吴小天,孙伟.基于误差扩散的图像分存方案[J].2011,31(1):74-81)给出了基于误差扩散法的2值图像分存方案,将一幅2值图像嵌入到多张与密图等大的2值图像中。欧锻灏,2013(欧锻灏,吴小天,孙伟,刘娟.基于恢复函数和误差扩散的灰度图像分存方案[J].计算机科学,2013,40(2):112-116)将一幅灰度图像嵌入到多张与密图等大的灰度图像中。

以上两种分存方法尽管使用的密图和载体图像等大,避免了传统有意义分存方法所采用的多位LSB位嵌入,并进一步引入了误差扩散来对载体像素值进行调整,将调整过程产生的误差传递给周围未调整的像素,利用载体像素的空间分辨率来对载体像素分辨率进行补偿,以抵消由于像素翻转或像素修改所导致的视觉偏差,但此类方法对嵌入载体的修改量较大,会对嵌入载体的视觉质量造成较大影响。同时吴小天,2011的分存方案只能用于2值图像分存,而欧锻灏,2013针对的分存方案只能用于灰度图像分存并且以上两种方法:吴小天,2011和欧锻灏,2013采用Arnold变换对载体图像进行置乱,Arnold变换比较简单,置乱系数仅为1,1,1,2,其安全性仅取决于迭代次数,仅能提供有限的安全性,并且Arnold变换所针对的置乱对象通常为正方形图像,适用面和安全性都较窄。

EMD-3嵌入方法(Niu X J,Ma M,Tang R,Yi Z X,2015.Image Steganography via Fully Exploiting Modification Direction[J],2015,9(5):243-254)是一种典型的大容量嵌入,即在n个载体数据都可微小改变的基础上嵌入一个3n进制的数,带来了较大的嵌入容量,结合EMD-3方法可有效地保障嵌入掩体的视觉质量。



技术实现要素:

本发明的目的在于克服现有技术缺陷,提供一种基于EMD-3的多载体密图分存和重构方法,相对于传统的图像分存重构方法,增强了嵌入的安全性和减少了对载体图像视觉质量的影响,使得分发后的含密载体具有较高的视觉质量。

为实现上述目的,本发明采用以下技术方案:

一种基于EMD-3的多载体密图分存方法,包括以下步骤:

第1步:输入待嵌入的p比特公开图像k=0,1,…,l-1,输入待隐藏的q比特密图S=(si,j)m×n,si,j∈{0,1,…,2q-1-1},其中

第2步:记S的MD5值和SHA-1值分别为16进制序列SMD5=<m0,m1,…,m31>和SSHA-1=<s0,s1,…,s39>,由SMD5和SSHA-1奇数和偶数索引元素构造16进制序列Sms=<ms0,ms1,…,ms71>,从Sms抽取出It个元素构成序列Sh=<h0,h1,…,hIt-1>,其中It为[24,70]范围内的偶数;

第3步:将Sh划分为奇数序列Sodd和偶数序列Seven,然后将Sodd和Seven映射为10进制小数G0∈[3.57,4];

第4步:由G0和用户给定的密钥参数G1∈(0,1)产生(0,1)范围内的随机数,为消除暂态效应,将迭代的前IT>0次结果抛弃,从第IT次开始生成随机数;

第5步:将第4步生成的6个连续随机数l0,l1,l2,l3,l4,l5∈(0,1)映射为[0,m)范围内的随机整数a,b,e和[0,n)范围内的随机整数c,d,f,其中m,n对应为公开图像的大小;

第6步:反复执行第5步,直至筛选出可用于将公开图像置乱为置乱图像的l组置乱参数ak,bk,ck,dk,ek,fk,并将置乱为其中k=0,1,…,l-1;

第7步:由Sodd和Seven转换为10进制数G2∈(0,1)和用户给定的参数G3∈[3.57,4]生成m·n个随机数作为矩阵R=(ri,j)m×n,ri,j∈(0,1),在迭代时,同样将前IT>0次结果抛弃,从第IT次开始生成随机数;

第8步:利用ri,j和G0生成9个随机数rr0,rr1,…,rr8,在迭代时,同样将前IT>0次结果抛弃,从第IT次开始生成随机数,其中i=0,1,…,m-1,j=0,1,…,n-1;

第9步:将rr0,rr1,…,rr8和Sms映射为起始控制参数Starti,j∈[0,l-1],由ri,j和G3产生3l个随机数:RR0,RR1,…,RR3l-1,其中前l个随机数映射为报数间隔序列Gapi,j=<Ga0,Ga1,…,Gal-1>,Ga0,Ga1,…,Gal-1∈[0,l-1],中间l个随机数映射为报数终值序列Mi,j=<mm0,mm1,…,mml-1>,mm0,mm1,…,mml-1∈[0,l-1],最后l个随机数作为报数方向序列Di,j=<D0,D1,…,Dl-1>,D0,D1,…,Dl-1∈(0,1),在迭代时,同样将前IT>0次结果抛弃,从第IT次开始生成随机数;

第10步:将Starti,j,Gapi,j,Mi.j和Di,j作为控制参数产生l个元素的索引顺序序列Sindex=<ind0,ind1,…,indl-1>,indu∈{0,1,…,l-1};

第11步:记置乱图像对应位置元素构成的向量为Si,j,将长度为l的基向量Gl=<30,31,…,3l-1>置乱为Gl′,结合Gl′将秘密像素si,j嵌入到Si,j中;

第12步:反复执行第8步~第11步,直至将秘密图像S=(si,j)m×n的所有像素嵌入到置乱后的公开图像中,其中k=0,1,…,l-1;

第13步:对k=0,1,…,l-1进行逆置乱,从而将秘密图像S=(si,j)m×n隐藏到公开图像k=0,1,…,l-1中。

进一步,在第2步中由SMD5和SSHA-1奇数和偶数索引元素构造16进制序列Sms=<ms0,ms1,…,ms71>的具体方法为式(1):

Sms=odd(SMD5)||even(SSHA-1)||odd(SSHA-1)||even(SMD5)=<smi>72 (1);

在第2步中从Sms抽取出It个元素构成序列Sh=〈h0,h1,…,hIt-1〉的具体方法为按式(2)将Sms,SMD5,SSHA-1映射为初始值xinit和变换参数ainit,binit,将xinit作为式(3)的初始值x0,按式(3)将序列Stemp=〈0,1,…,It-1〉映射为索引位置序列Sx=〈x0,x1,…,xIt-1〉,从而按式(4)由Sms抽取出Sh=<h0,h1,…,hIt-1>;

式(2)中,函数adjust()为随机整数生成函数,用于以输入随机数为随机种子筛选得到(0,len(Sms))范围内的随机整数ainit且满足gcd(ainit,len(Sms))=1;

xn+1=(ainitxn+binit)modlen(Sms) (3)

Sh=Draw(Sms,Sx) (4)

式(4)中,Draw()为序列抽取函数,执行的功能是以Sx=<x0,x1,…,xIt-1>中的元素为索引,将Sms中的第xi个元素msxi作为序列Sh的第i个元素hi,其中i=0,1,…,It-1。

进一步,在第3步中将Sh划分为奇数序列Sodd和偶数序列Seven的具体方法为式(5):

在第3步中将Sodd和Seven映射为10进制小数G0∈[3.57,4]的具体方法为式(6),其中符号“\”表示整数除法:

在第4步中由G0和用户给定的密钥参数G1∈(0,1)产生(0,1)范围内的随机数的具体方法为(7),其中G0为系统参数μ,G1为初始值;

xn+1=μxn(1-xn) (7);

在第5步中将第4步生成的6个连续随机数l0,l1,l2,l3,l4,l5∈(0,1)映射为[0,m)范围内的随机整数a,b,e和[0,n)范围内的随机整数c,d,f的具体方法为按式(8)将l0,l1,l2,l3,l4,l5依次转换为[0,m)范围内的整数a,b,e和[0,n)范围内的整数c,d,f:

在第6步中筛选出可用于将公开图像置乱为置乱图像的l组置乱参数ak,bk,ck,dk,ek,fk的具体方法为式(9):

式(9)中,“|”表示或,p=gcd(m,n)为m,n的最大公因子且m=pz1,n=pz2;

进一步,在第6步中将置乱为的具体方法为式(10):

在第13步中对k=0,1,…,l-1进行逆置乱的具体方法为式(22):

进一步,在第7步中由Sodd和Seven转换为10进制数G2∈(0,1)的具体方法为式(11):

在第7步中生成m·n个随机数作为矩阵R=(ri,j)m×n,ri,j∈(0,1)的具体方法为式(7),其中G2为初始值,G3为系统参数μ;

在第7步中利用ri,j和G0生成9个随机数rr0,rr1,…,rr8的具体方法为式(7),其中ri,j为初始值,G0为系统参数;

在第9步中将rr0,rr1,…,rr8和Sms映射为起始控制参数Starti,j∈[0,l-1]的具体方法为式(12);

在第9步中由ri,j和G3产生3l个随机数:RR0,RR1,…,RR3l-1的具体方法为式(7),其中ri,j为初始值,G3为系统参数;

在第9步中前l个随机数映射为报数间隔序列Gapi,j=<Ga0,Ga1,…,Gal-1>,Ga0,Ga1,…,Gal-1∈[0,l-1]的具体方法为式(13):

在第9步中,中间l个随机数按式(15)进行量化作为报数终值序列Mi,j=<mm0,mm1,…,mml-1〉,mm0,mm1,…,mml-1∈[0,l-1]的具体方法为式(14):

进一步,在第10步中将Starti,j,Gapi,j,Mi.j和Di,j作为控制参数产生l个元素的索引顺序序列Sindex=〈ind0,ind1,…,indl-1>,indu∈{0,1,…,l-1}的具体方法为式(15):

Sindex=fJosephus(l,Starti,j,Gapi,j,Mi,j,Di,j) (15)

式(15)中,函数fJosephus()为约瑟夫遍历的映射函数,用于按约瑟夫遍历映射中的报数先后顺序产生l个元素的索引顺序序列Sindex,其具体执行的功能是以Starti,j作为报数起始位置索引,进行l次间隔报数,由Gapi,j序列中的第u个元素Gau确定第u次间隔报数跳过的元素数,由Di,j序列中的第u个元素Du确定第u次报数的报数方向,其中Du≥0.5为顺时针,反之为逆时针,由Mi.j序列中的第u个元素mmu确定第u次报数终止值,将报数终止值对应的索引位置作为Sindex的第u个元素indu并剔除该索引位置,其中u=0,1,…l-1。

进一步,在第11步中将长度为l的基向量Gl=<30,31,…,3l-1>置乱为Gl′的具体方法为式(16):

式(16)中,gk=3k,即将Gl中的第k个元素映射到索引顺序序列Sindex第k个元素对应的位置;

在第11步中结合Gl′将秘密像素si,j嵌入到Si,j中的具体方法为式(17):

Si′,j=EMD(si,j,Si,j,Gl′) (17);

式(17)中,函数EMD()用于通过调整置乱图像对应位置元素构成的向量Si,j来嵌入秘密元素si,j,基向量Gl′中的每个元素则对应为Si,j中的每个元素的权重。

进一步,在第11步中式(17)的具体实现方法为在于包括以下步骤:

第11.1步:记Gl′=<g0′,g1′,…,g′l-1>,按式(18)计算Si,j和Gl′内积模3l值:

第11.2步:将f与秘密像素si,j比较,若f=si,j,则不变,否则按式(19)计算si,j和f模3l差值d,如果d<0,d=3l+d;

d=(si,j-f)mod3l (19);

第11.3步:记序列Gl′中第k个元素indk∈Sindex,按式(20)计算f(k),按式(21)进行调整:

式(21)中,函数功能为:若则调整继续按式(20)计算f(k),重新按式(21)进行调整;若则调整继续按式(20)计算f(k),重新按式(21)进行调整;

第11.4步:反复执行第11.3步,直至序列中l个元素均调整完毕。

一种基于EMD-3的多载体密图重构方法,其特征在于包括以下步骤:

第1步:由用户输入嵌入秘密信息的公开图像k=0,1,…,l-1,待提取秘密图像S对应的MD5值SMD5=<m0,m1,…,m31>和SHA-1值SSHA-1=<s0,s1,…,s39>,抽取元素数It∈[24,70],Itmod2=0和用户密钥G1∈(0,1),G3∈[3.57,4]以及消除暂态效应的滤除迭代次数IT>0;

第2步:由SMD5和SSHA-1构造16进制序列Sms=〈ms0,ms1,…,ms71〉,从Sms抽取出It个元素构成序列Sh=〈h0,h1,…,hIt-1〉;

第3步:将Sh划分为奇数序列Sodd和偶数序列Seven,然后将Sodd和Seven映射为10进制小数G0∈[3.57,4];

第4步:由G0和用户给定的密钥参数G1产生(0,1)范围内的随机数,为消除暂态效应,将迭代的前IT>0次结果抛弃,从第IT次开始生成随机数;

第5步:将第4步生成的6个连续随机数l0,l1,l2,l3,l4,l5∈(0,1)映射为[0,m)范围内的随机整数a,b,e和[0,n)范围内的随机整数c,d,f;

第6步:反复执行第5步,直至筛选出可用于将用于将公开图像置乱为置乱图像的l组置乱参数ak,bk,ck,dk,ek,fk,并将置乱为其中k=0,1,…,l-1;

第7步:由Sodd和Seven转换的10进制数G2∈(0,1)和用户给定的参数G3生成m·n个随机数作为矩阵R=(ri,j)m×n,ri,j∈(0,1),在迭代时,同样将前IT>0次结果抛弃,从第IT次开始生成随机数;

第8步:利用ri,j和G0生成9个随机数rr0,rr1,…,rr8,在迭代时,同样将前IT>0次结果抛弃,从第IT次开始生成随机数,其中i=0,1,…,m-1,j=0,1,…,n-1;

第9步:将rr0,rr1,…,rr8和Sms映射为起始控制参数Starti,j∈[0,l-1],由ri,j和G3产生3l个随机数:RR0,RR1,…,RR3l-1,其中前l个随机数映射为报数间隔序列Gapi,j=<Ga0,Ga1,…,Gal-1>,Ga0,Ga1,…,Gal-1∈[0,l-1],中间l个随机数映射为报数终值序列Mi,j=<mm0,mm1,…,mml-1>,mm0,mm1,…,mml-1∈[0,l-1],最后l个随机数作为报数方向序列Di,j=<D0,D1,…,Dl-1>,D0,D1,…,Dl-1∈(0,1),在迭代时,同样将前IT>0次结果抛弃,从第IT次开始生成随机数;

第10步:将Starti,j,Gapi,j,Mi.j和Di,j作为控制参数产生l个元素的索引顺序序列Sindex=<ind0,ind1,…,indl-1>,indu∈{0,1,…,l-1};

第11步:将长度为l的基向量Gl=<30,31,…,3l-1>置乱为Gl′,结合Gl′从Si,j中提取出秘密像素值si,j;

第12步:反复执行第8步~第11步,直至得到完整密图S=(si,j)m×n。

进一步,在第11步中从Si,j中提取出秘密像素值si,j的具体方法为式(18):

本发明同现有技术优点分析:

①现有的基于误差扩散的图像方案以及基于恢复函数和误差扩散的灰度图像分存方案都是通过误差扩散法来对载体像素值进行调整,将调整过程产生的误差传递给周围未调整的像素,利用载体像素的空间分辨率来对载体像素分辨率进行补偿,以抵消由于像素翻转或像素修改所导致的视觉偏差,但此类方法对嵌入载体的修改量较大,会对嵌入载体的视觉质量造成较大影响。同以上方法不同,本发明采用对嵌入载体影响较小的EMD-3嵌入方法进行嵌入,在保持较大嵌入容量的同时只对嵌入载体进行微小调整,对于载体图像像素,最大调整量仅为±1。

②现有的基于误差扩散的图像分存方案通常只能用于2值秘密图像伪装嵌入,基于恢复函数和误差扩散的灰度图像分存方案针对的是灰度图像分存,同现有方法不同,本发明所给出的多公开载体密图伪装嵌入重构方法可针对不同像素分辨率的秘密图像和公开载体图像,因而具有更广泛的适用性。

③现有的基于误差扩散的图像分存方案以及基于恢复函数和误差扩散的灰度图像分存方案都是采用Arnold变换对载体图像进行置乱,Arnold变换比较简单,置乱系数仅为1,1,1,2,其安全性仅取决于迭代次数,仅能提供有限的安全性,并且Arnold变换所针对的置乱对象通常为正方形图像,适用面和安全性都较窄。同现有方法不同,本发明采用可针对任意矩形图像置乱的2维映射,置乱的参数被扩展为6个,从而使得本方法可直接应用于任意大小正方形和长方形图像,因此相对于现有方法,具有更高的适用面。

④现有的基于误差扩散的图像分存方案以及基于恢复函数和误差扩散的灰度图像分存方案仅能通过Arnold变换提供有限的安全性,而本发明所给出的方法则在安全性上进一步进行了增强:1)所提方法通过密图MD5值和SHA-1值以及用户给定的密钥产生多组置乱参数并分别用于不同的公开图像进行像素位置置乱并进一步对EMD-3嵌入方法的基向量由与密图MD5值和SHA-1值以及用户给定的密钥绑定的随机参数进行置乱来增强EMD-3嵌入方法的安全性,从而仅有提供正确的用户密钥和正确的密图MD5值和SHA-1值才能对秘密图像进行恢复,因此具备更高的安全性。

附图说明

图1是分存流程图;

图2是重构流程图;

图3是载体图像,为256×256分辨率的8位灰度图像Lake;

图4是载体图像,为256×256分辨率的8位灰度图像Lena;

图5是载体图像,为256×256分辨率的8位灰度图像Man;

图6是载体图像,为256×256分辨率的8位灰度图像Road;

图7是载体图像,为256×256分辨率的8位灰度图像Ship;

图8是载体图像,为256×256分辨率的8位灰度图像Women;

图9是秘密图像,为256×256分辨率的8位灰度图像Peppers;

图10是实施例,嵌入图9秘密图像的灰度图像Lake;相对于图3的PSNR=49.90dB;

图11是实施例,嵌入图9秘密图像的灰度图像Lena;相对于图4的PSNR=49.90dB;

图12是实施例,嵌入图9秘密图像的灰度图像Man;相对于图5的PSNR=49.89dB;

图13是实施例,嵌入图9秘密图像的灰度图像Road;相对于图6的PSNR=49.87dB;

图14是实施例,嵌入图9秘密图像的灰度图像Ship;相对于图7的PSNR=49.89dB;

图15是实施例,嵌入图9秘密图像的灰度图像Women;相对于图8的PSNR=49.91dB;

图16是实施例,由图10~图15恢复出的秘密图像,相对于图9的误码率EBR为0%。

具体实施方式

以下以JAVA jdk1.8.0_65为案例实施环境,结合附图对本发明实施方式进行详细说明,但不局限于本实施案例,其中图1是分存流程图,图2是重构流程图。

嵌入方法的具体实施步骤:

第1步:输入待嵌入的p比特公开图像k=0,1,…,l-1和待隐藏的q比特密图S=(si,j)m×n,si,j∈{0,1,…,2q-1-1},其中

例如:输入待嵌入的p=8比特公开图像k=0,1,…,l-1和待隐藏的q=8比特密图S=(si,j)2×3,si,j∈{0,1,…,255},其中假设选取的公开图像和密图对应的矩阵为:

第2步:记密图S的MD5值和SHA-1值分别为16进制数序列SMD5=<m0,m1,…,m31>和SSHA-1=<s0,s1,…,s39>,由SMD5和SSHA-1奇数和偶数索引元素,按式(1)构造16进制序列Sms=<ms0,ms1,…,ms71>;

例如:假设S对应的SMD5=<8,e,6,a,f,c,5,f,c,8,5,f,b,9,1,f,7,e,b,3,d,3,9,8,3,3,d,8,7,4,4,b>,SSHA-1=<d,4,6,0,d,0,6,0,2,e,b,b,d,7,1,5,b,e,c,1,c,f,d,8,e,4,8,9,4,b,3,3,3,4,8,6,4,f,8,9>,则按式(1)可构造16进制序列:

Sms=<e,a,c,f,8,f,9,f,e,3,3,8,3,8,4,b,d,6,d,6,2,b,d,1,b,c,c,d,e,8,4,3,3,8,4,8,4,0,0,0,e,b,7,5,e,1,f,8,4,9,b,3,4,6,f,9,8,6,f,5,c,5,b,1,7,b,d,9,3,d,7,4>

第3步:按式(2)将Sms,SMD5,SSHA-1映射为初始值xinit和变换参数ainit,binit,然后将xinit作为同余映射方程式(3)的初始值x0,ainit,binit作为变换参数,用式(3)将序列Stemp=<0,1,…,It-1>映射为索引位置序列Sx=<x0,x1,…,xIt-1>,从而按式(4)将Sms抽取为Sh=<h0,h1,…,hIt-1>,其中It为范围在[24,70]的偶数;

例如:按式(2)可将Sms,SMD5,SSHA-1映射为初始值xinit=50和变换参数ainit=65,binit=19,其中It=24,用式(3)可将序列Stemp=<0,1,…,23>映射为索引位置序列Sx=<19,12,5,70,63,56,49,42,35,28,21,14,7,0,65,58,51,44,37,30,23,16,9,2>,按式(4)可将Sms抽取为Sh=<6,3,15,7,1,8,9,7,8,14,11,4,15,14,11,15,3,14,0,4,1,13,3,12>;

第4步:将Sh=<h0,h1,…,hIt-1>中的元素按元素索引的奇偶性划分为奇数序列Sodd和偶数序列Seven,如式(5)和式(6)所示;将Sodd和Seven按式(7)转换为[3.57,4]范围内的10进制小数G0;

例如:将Sh=<h0,h1,…,hIt-1>中的元素按元素索引的奇偶性划分为奇数序列Sodd=<3,7,8,7,14,4,14,15,14,4,13,12>和偶数序列Seven=<6,15,1,9,8,11,15,11,3,0,1,3>,将Sodd和Seven按式(7)可转换为[3.57,4]范围内的10进制小数G0=3.7605406528711316;

第5步:将G0作为式(8)的系统参数μ,由用户给定G1∈(0,1)作为式(8)的初始值x0,在迭代时,将式(8)迭代的前IT次结果抛弃,其中IT≥0;

例如:将G0=3.7605406528711316作为式(8)的系统参数μ,由用户给定G1=0.8378099125461247作为式(8)的初始值x0,IT=1000;

第6步:将式(8)迭代产生的6个连续随机数依次记为l0,l1,l2,l3,l4,l5∈(0,1),按式(9)将l0,l1,l2,l3,l4,l5依次转换为[0,m)范围内的整数a,b,e和[0,n)范围内的整数c,d,f并判断a,b,c,d是否满足式(10)的成立条件;

例如将式(8)迭代产生的6个连续随机数依次记为(l0,l1,l2,l3,l4,l5)=(0.828922607430594,0.5332819628266784,0.9359696535160353,0.22537093573720954,0.6565109643247844,0.8480181554104381),按式(9)将l0,l1,l2,l3,l4,l5依次转换为[0,m)范围内的整数a=1,b=1,e=0和[0,n)范围内的整数c=2,d=2,f=0,计算可确定不满足式(10)的成立条件;

第7步:反复执行第6步,直至生成l组a,b,c,d,e,f使得式(10)所对应的4个条件都成立,将这l组参数依次记为ak,bk,ck,dk,ek,fk,k=0,1,…,l-1;将ak,bk,ck,dk,ek,fk作为式(11)参数,利用式(11)将公开图像置乱为其中k=0,1,…,l-1;

例如:假设生成的l=6组随机置乱系数依次记为a0=1,b0=0,c0=2,d0=2,e0=0,f0=0,a1=1,b1=0,c1=0,d1=2,e1=0,f1=2,a2=1,b2=1,c2=0,d2=2,e2=1,f2=1,a3=1,b3=0,c3=0,d3=1,e3=1,f3=1,a4=1,b4=0,c4=0,d4=2,e4=1,f4=2,a5=1,b5=0,c5=0,d5=1,e5=1,f5=2;

利用式(11)将公开图像置乱为

第8步:按式(12)将Sodd和Seven转换为(0,1)范围内的10进制小数G2,由用户给定[3.57,4]范围内的随机数G3,将G2和G3分别作为式(8)的初始值x0和系统参数μ,代入式(8)迭代产生m·n个随机数作为矩阵R=(ri,j)m×n,ri,j∈(0,1),在迭代时,同样将前IT次结果抛弃,其中IT≥0;

例如:按式(12)将Sodd和Seven转换为(0,1)范围内的10进制小数G2=0.8657350626890548,由用户给定[3.57,4]范围内的随机数G3=3.9590343107800142,代入式(8)迭代可产生2·3个随机数作为矩阵IT=1000;

第9步:将ri,j和G0分别作为式(8)的初始值和系统参数,代入式(8)产生9个随机数rr0,rr1,…,rr8,在迭代时,同样将前IT次结果抛弃,其中IT≥0,i=0,1,…,m-1,j=0,1,…,n-1;

例如:将r0,0=0.8074591188295858和G0=3.7605406528711316分别作为式(8)的初始值和系统参数,代入式(8)产生9个随机数rr0,rr1,…,rr8=(0.8787863257169604,0.40057624797235264,0.9029619087426863,0.3295049653089493,0.8308216734468824,0.5285703891771691,0.937065557462728,0.22177299058343278,0.6490307005627043);

第10步:将rr0,rr1,…,rr8和Sms=<ms0,ms1,…,ms71>按式(13)映射为Starti,j,将ri,j和G3分别作为式(8)的初始值和系统参数μ,代入式(8)产生3l个随机数:RR0,RR1,…,RR3l-1,其中前l个随机数按式(14)进行量化作为报数间隔序列Gapi,j=<Ga0,Ga1,…,Gal-1>,中间l个随机数按式(15)进行量化作为报数终值序列Mi,j=<mm0,mm1,…,mml-1>,最后l个随机数作为报数方向序列Di,j=<D0,D1,…,Dl-1>,在迭代时,同样将前IT≥0次结果抛弃;

例如:rr0,rr1,…,rr8=(0.8787863257169604,0.40057624797235264,,0.9029619087426863,0.3295049653089493,0.8308216734468824,0.5285703891771691,0.937065557462728,0.22177299058343278,0.6490307005627043)和Sms=<e,a,c,f,8,f,9,f,e,3,3,8,3,8,4,b,d,6,d,6,2,b,d,1,b,c,c,d,e,8,4,3,3,8,4,8,4,0,0,0,e,b,7,5,e,>1,f,8,4,9,b,3,4,6,f,9,8,6,f,5,c,5,b,1,7,b,d,9,3,d,7,4>按式(13)映射为Start0,0=2,将r0,0=0.8074591188295858和G3=3.959034310780014分别作为式(8)的初始值和系统参数μ,代入式(8)产生3l=18个随机数:RR0,RR1,…,RR17=(0.9449148662016962,0.20607075199800415,0.6477201726276501,0.9033675026117914,0.34560254552340136,0.8953808455114266,0.3708585285711293,0.9237317052103959,0.2789196761199095,0.7962547991700155,0.6422863853662152,0.9096062832505589,0.32552246160978554,0.8692360264487988,0.45000267198800836,0.9798620497390081,0.07812130097356845,0.28512317134166437)

其中前6个随机数按式(14)进行量化作为报数间隔序列Gap0,0=<4,1,2,5,0,0>,中间6个随机数按式(15)进行量化作为报数终值序列M0,0=<3,1,2,4,1,0>,最后6个随机数作为报数方向序列D0,0=<1,1,-1,-1,1,1>,其中IT=1000;

第11步:将Starti,j,Gapi,j,Mi.j和Di,j作为式(16)的控制参数,由式(16)按约瑟夫遍历映射产生l个元素的索引顺序序列Sindex=<ind0,ind1,…,indl-1>,indu∈{0,1,…,l-1},例如:将Start0,0=0,Gap0,0=<1,0,4,0,0,0>,M0,0=<3,6,3,3,1,4>和D0,0=<-1,1,-1,1,-1,-1>作为式(16)的控制参数,由式(16)按约瑟夫遍历映射产生l个元素的索引顺序序列Sindex=<4,3,1,5,0,2〉

第12步:记长度为l的基向量Gl=〈30,31,…,3l-1〉,记所构成的元素序列为按式(17)将Gl=置乱为Gl′,然后将秘密像素si,j按式(18)嵌入到Si,j中,记嵌入后的Si,j为例如:记所构成的元素序列为S0,0=〈195,208,52,141,63,238〉,按式(17)将G6=〈1,3,9,27,81,243〉置乱为G6′=〈81,27,3,243,1,9〉,然后将秘密像素s0,0=48按式(18)嵌入到S0,0中,记嵌入后的S0,0为S′0,0=〈196,208,52,142,63,239〉

第12.1步:记Gl′=〈g0′,g1′,…,g′l-1>,按式(19)计算Si,j和Gl′内积值模3l,结果记为f:例如:记G6′=<81,27,3,243,1,9>,按式(19)计算S0,0=<195,208,52,141,63,238>和G6′=<81,27,3,243,1,9>内积值模3l=36=729,结果记为f=444:

第12.2步:将f与秘密像素si,j比较,若f=si,j,则si,j不变;否则按如下规则依次调整序列中每个元素按式(20)计算si,j和f差值模3l结果d,如果d<0,d=3l+d;

例如:将f与秘密像素si,j比较,f=444≠s0,0=48,按式(20)计算s0,0=48和f=444差值模3l=729,结果记为d=-396,d<0,则d=-396+729=333;

第12.3步:记序列Gl′中第k个元素indk∈Sindex,按式(21)计算f(k),按式(22)进行调整;例如:按式(21)计算f(0)=0,按式(22)进行调整:d=333>(81-1)/2=40,f(0)=0,所以按式(21)计算f(1)=2,按式(22)进行调整:d=333>(27-1)/2=13,f(1)=2,所以按式(21)计算f(2)=2,按式(22)进行调整:d=333>(3-1)/2=1,f(2)=2,所以按式(21)计算f(3)=0,按式(22)进行调整:d=333>(243-1)/2=121,f(3)=0,所以按式(21)计算f(4)=2,按式(22)进行调整:d=333>(1-1)/2=0,f(4)=2,所以按式(21)计算f(5)=0,按式(22)进行调整:d=333>(9-1)/2=4,f(5)=0,所以

第12.4步:反复执行第12.3步,直至序列中l个元素均调整完。

第13步:反复执行第12步,直至将秘密图像S=(si,j)2×3的所有像素嵌入到置乱后的公开图像中,其中k=0,1,…,l-1;例如:反复执行第12步,直至将秘密图像S=(si,j)2×3的所有像素嵌入到置乱后的公开图像中,如下所示:

第14步:对k=0,1,…,l-1按式(11)对应的逆映射式(22)进行恢复,从而将秘密图像S=(si,j)m×n隐藏到公开图像k=0,1,…,l-1中;例如:恢复后的嵌秘公开图像如下所示:

解密方法的具体实施步骤:

第1步:由用户输入已嵌入秘密信息的公开图像k=0,1,…,l-1,秘密图像的MD5值,SHA-1值,初始迭代次数It,用户密钥G1∈(0,1)和G3∈[3.57,4],迭代次数IT;

例如:由用户输入已嵌入秘密信息的公开图像k=0,1,…,5,如下所示:

初始迭代次数It=24,用户密钥G1=0.8378099125461247和G3=3.9590343107800142,迭代次数IT=1000;

第2步:将SMD5和SSHA-1奇数和偶数比特,按式(1)构造16进制序列Sms=<ms0,ms1,…,ms71>;

例如SMD5=<8,e,6,a,f,c,5,f,c,8,5,f,b,9,1,f,7,e,b,3,d,3,9,8,3,3,d,8,7,4,4,b>,SSHA-1=<d,4,6,0,d,0,6,0,2,e,b,b,d,7,1,5,b,e,c,1,c,f,d,8,e,4,8,9,4,b,3,3,3,4,8,6,4,f,8,9>,按式(1)构造16进制序列Sms=<e,a,c,f,8,f,9,f,e,3,3,8,3,8,4,b,d,6,d,6,2,b,d,1,b,c,c,d,e,8,4,3,3,8,4,8,4,0,0,0,e,b,7,5,e,>1,f,8,4,9,b,3,4,6,f,9,8,6,f,5,c,5,b,1,7,b,d,9,3,d,7,4>

第3步:按式(2)将Sms,SMD5,SSHA-1映射为初始值xinit和变换参数ainit,binit,然后将xinit作为同余映射方程式(3)的初始值x0,和ainit,binit一起迭代It-1次产生Sms元素索引位置序列Sx=<x0,x1,…,xIt-1>,从而按式(4)将Sms抽取为Sh=<h0,h1,…,hIt-1>;例如:按式(2)将Sms,SMD5,SSHA-1映射为初始值xinit=50和变换参数ainit=65,binit=19,其中It=24,用式(3)将序列Stemp=<0,1,…,23>映射为索引位置序列

Sx=<19,12,5,70,63,56,49,42,35,28,21,14,7,0,65,58,51,44,37,30,23,16,9,2>,按式(4)将Sms抽取为Sh=<6,3,15,7,1,8,9,7,8,14,11,4,15,14,11,15,3,14,0,4,1,13,3,12>;

第4步:将Sh=<h0,h1,…,hIt-1>中的元素按元素索引的奇偶性划分为奇数序列Sodd和偶数序列Seven,如式(5)和式(6)所示;将Sodd和Seven按式(7)转换为[3.57,4]范围内的10进制小数G0;例如:将Sh=<h0,h1,…,hIt-1>中的元素按元素索引的奇偶性划分为奇数序列Sodd=<3,7,8,7,14,4,14,15,14,4,13,12>和偶数序列Seven=<6,15,1,9,8,11,15,11,3,0,1,3>,将Sodd和Seven按式(7)转换为[3.57,4]范围内的10进制小数G0=3.7605406528711316;

第5步:将G0作为式(8)的系统参数μ,用户密钥G1∈(0,1)作为式(8)的初始值x0,在迭代时,将式(8)迭代的前IT次结果抛弃;例如:将G0=3.7605406528711316作为式(8)的系统参数μ,由用户给定G1=0.8378099125461247作为式(8)的初始值x0;

第6步:将式(8)迭代产生的6个连续随机数依次记为l0,l1,l2,l3,l4,l5∈(0,1),按式(9)将l0,l1,l2,l3,l4,l5依次转换为(0,m)范围内的整数a,b,e和(0,n)范围内的整数c,d,f,并判断a,b,c,d是否满足式(10)的成立条件;

例如:将式(8)迭代产生的6个连续随机数依次记为(l0,l1,l2,l3,l4,l5)=(0.828922607430594,0.5332819628266784,0.9359696535160353,0.22537093573720954,0.6565109643247844,0.8480181554104381),按式(9)将l0,l1,l2,l3,l4,l5依次转换为[0,m)范围内的整数a=1,b=1,e=0和[0,n)范围内的整数c=2,d=2,f=0,计算不满足式(10)的成立条件;

第7步:反复执行第6步,直至生成l组a,b,c,d,e,f使得式(10)所对应的4个条件都成立,将这l组参数依次记为ak,bk,ck,dk,ek,fk,k=0,1,…,l-1;将ak,bk,ck,dk,ek,fk作为式(11)参数,利用式(11)将嵌入信息图像置乱为其中k=0,1,…,l-1;例如:生成的l=6组随机置乱系数依次记为a0=1,b0=0,c0=2,d0=2,e0=0,f0=0,a1=1,b1=0,c1=0,d1=2,e1=0,f1=2,a2=1,b2=1,c2=0,d2=2,e2=1,f2=1,a3=1,b3=0,c3=0,d3=1,e3=1,f3=1,a4=1,b4=0,c4=0,d4=2,e4=1,f4=2,a5=1,b5=0,c5=0,d5=1,e5=1,f5=2;

利用式(11)将嵌入信息图像置乱为

第8步:按式(12)将Sodd和Seven转换为(0,1)范围内的10进制小数G2,将G2和给定的密钥G3分别作为式(8)的初始值x0和系统参数μ,代入式(8)迭代产生m·n个随机数作为矩阵R=(ri,j)m×n,ri,j∈(0,1),在迭代时,同样将前IT次结果抛弃,其中IT≥0;例如:按式(12)将Sodd和Seven转换为(0,1)范围内的10进制小数G2=0.8657350626890548,由用户给定[3.57,4]范围内的随机数G3=3.9590343107800142,代入式(8)迭代产生2·3个随机数作为矩阵IT=1000;

第9步:将ri,j和G0分别作为式(8)的初始值和系统参数μ,代入式(8)产生9个随机数rr0,rr1,…,rr8,在迭代时,同样将前IT次结果抛弃,i=0,1,…,m-1,j=0,1,…,n-1;例如:将r0,0=0.8074591188295858和G0=3.7605406528711316分别作为式(8)的初始值和系统参数,代入式(8)产生9个随机数rr0,rr1,…,rr8=(0.8787863257169604,0.40057624797235264,,0.9029619087426863,0.3295049653089493,0.8308216734468824,0.5285703891771691,0.93

7065557462728,0.22177299058343278,0.6490307005627043);

第10步:将rr0,rr1,…,rr8和Sms=〈ms0,ms1,…,ms71〉按式(13)映射为Starti,j,将ri,j和G3分别作为式(8)的初始值和系统参数μ,代入式(8)产生3l个随机数:RR0,RR1,…,RR3l-1,其中前l个随机数按式(14)进行量化作为序列Gapi,j=〈Ga0,Ga1,…,Gal-1〉,中间l个随机数按式(15)进行量化作为序列Mi,j=〈mm0,mm1,…,mml-1>,最后l个随机数作为序列Di,j=<D0,D1,…,Dl-1>,在迭代时,同样将前IT次结果抛弃,其中IT≥0;

例如:rr0,rr1,…,rr8=(0.8787863257169604,0.40057624797235264,,0.9029619087426863,0.3295049653089493,0.8308216734468824,0.5285703891771691,0.937065557462728,0.22177299058343278,0.6490307005627043)和Sms=<e,a,c,f,8,f,9,f,e,3,3,8,3,8,4,b,d,6,d,6,2,b,d,1,b,c,c,d,e,8,4,3,3,8,4,8,4,0,0,0,e,b,7,5,e,>1,f,8,4,9,b,3,4,6,f,9,8,6,f,5,c,5,b,1,7,b,d,9,3,d,7,4>按式(13)映射为Start0,0=2,将r0,0=0.8074591188295858和G3=3.959034310780014分别作为式(8)的初始值和系统参数μ,代入式(8)产生3l=18个随机数:RR0,RR1,…,RR17=(0.9449148662016962,0.20607075199800415,0.6477201726276501,0.9033675026117914,0.34560254552340136,0.8953808455114266,0.3708585285711293,0.9237317052103959,0.2789196761199095,0.7962547991700155,0.6422863853662152,0.9096062832505589,0.32552246160978554,0.8692360264487988,0.45000267198800836,0.9798620497390081,0.07812130097356845,0.28512317134166437),其中前6个随机数按式(14)进行量化作为报数间隔序列Gap0,0=<4,1,2,5,0,0>,中间6个随机数按式(15)进行量化作为报数终值序列M0,0=<3,1,2,4,1,0>,最后6个随机数作为报数方向序列D0,0=<1,1,-1,-1,1,1>,其中IT=1000

第11步:将Starti,j,Gapi,j,Mi.j和Di,j作为式(16)的控制参数,产生l个元素的索引顺序序列Sindex;例如:将Start0,0=2,Gap0,0=<4,1,2,5,0,0>,M0,0=<3,1,2,4,1,0>和D0,0=<1,1,-1,-1,1,1>作为式(16)的控制参数,由式(16)按约瑟夫遍历映射产生l个元素的索引顺序序列Sindex=<4,3,1,5,0,2>;

第12步:记长度为l的基向量Gl=<30,31,…,3l-1>,按式(17)将Gl置乱为Gl′=<g0,g1,…,gl-1〉,记置乱后像素所构成的元素序列为按式(18)计算秘密像素值si,j;例如:按式(17)将G6=〈1,3,9,27,81,243〉置乱为G6′=〈81,27,3,243,1,9>,记置乱后像素所构成的元素序列为S0,0=<196,208,52,142,63,239>,按式(18)计算秘密像素值s0,0=48;

第13步:反复执行第12步,直至得到完整密图S=(si,j)m×n;例如:反复执行第12步,直至得到完整密图S=(si,j)2×3如下所示:

图10~图15是实施例,以图3~图8为公开图像,以图9为密图,按图1对应的分存流程得到嵌入密图后的公开载体图像,其中图10相对于图3的PSNR为49.90dB,图11相对于图4的PSNR为49.90dB,图12相对于图5的PSNR为49.89dB,图13相对于图6的PSNR=49.87dB,图14相对于图7的PSNR为49.89dB,图15相对于图8的PSNR为PSNR=49.91dB,因此嵌入掩体具备较高的视觉质量。

图16是实施例,按照图2重构流程,从图10~图15中提取出密图,相对于图9的误码率EBR为0%,因此密图可完全重构。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1