1、组号:08 创 新 性 实 验 报 告题 目: 可视加密学 院: 电子通信与物理学院专业班级: 通信工程2012级2班学 号: 201201101406学生姓名: 冯瑞指导教师: 颜斌完成日期: 2015年7月17日1. 摘要本设计名称是可视加密,可视密码方案实际上是一种秘密共享方案,由Naor和Shamir提出。可视秘密密码方案提供了一种将一个秘密的黑白图像分割成多个子秘密的方案,不需要任何密码学的计算就可以通过这些子秘密获得原来的秘密图像。这种技术始于1994年,它涉及的问题是:有无可能将一个秘密图片发给两人,没人都无法从其中获得的加密图片获得原始图片信息,但是将二者的分图片合在一起就可以
2、获得原始图片信息。本次试验采用Naor方案来对黑白图像处理,将输入文件的像素扩展为两个像素,然后替换为方案中的像素信息,实现图片信息的加密。并且试验较好地完成了四项设计任务,对算法进行了改进,能够对给定的图片进行加密。关键词:Naor 黑白图像 分图片 加密2. 设计的目的本次设计的主要目的是熟悉可视加密,并能运用所学到的知识对给定的图像进行加密;本设计要解决的问题有:1、将指定灰度图像转换为二值图像;2、使用加密程序将图像加密;3、在加密后的图片上添加噪声,观察噪声对算法的影响;4、改进算法,设计2X2大小的图像块,保证加密后图片长宽比不变。本设计最终可以实现最给定图片的加密,并改进了算法,
3、可以实现图片长宽比例不变。3. 设计的原理本次可视加密设计采用了Naor可是加密方案。可视密码的解密原理是通过子图片的叠加,以视觉辨别出秘密图像。表.1是一个(2,2)可视密码的编码模型,表中的每一个黑色或白色代表一个像素的颜色,当从秘密图像中拿到一个像素,若此像素为白色,就随机选择表格中的第一行或第二行的像素组合配置在分存图像的对应位置上;若此图像像素为黑色,则随机选择第三行或第四行的像素组合配置在分存图像的对应位置上。表格最后一列则是分存图像1与分存图像2叠加时的结果。从此表中可以发现,当只有一张分存图像时,是无法辨识出原秘密图像的像素点的,一旦两张分存图像叠加,对应在原图像的黑点会产生全
4、黑的两个像素点组合,而对应在原秘密图像的白点会产生一黑一白的两个像素点组合,利用视觉系统即可分辨黑点与白点的差异。根据表1编码模型,可将此概念延伸到(k,n)可视密码,即将图像加密为n张分存图像,当取k张(或k张以上)分存图像同时叠加即可辨识出秘密图像,但取k-1张(或以下)分存图像同时叠加则无法辨识出秘密图像。表1.Naor方案编码模型4. 设计的过程本设计包含了四项任务。任务一:读入Lena 图像,每个像素的数值范围是0-255,将大于128的像素值设为255(或者1),小于128的像素值设为0,从而将灰度图像转换为黑白图像。任务一步骤:1、将图像信息读入,并扩展像素。function v
5、isualcryptography()clear all; close all;Img_in = imread(lena.tiff); %读入图像Nr, Nc = size(Img_in);Img_scaled = zeros(Nr, 2*Nc);Img_scaled(1:Nr), 2*(1:Nc)=Img_in; %将像素扩展为2个像素Img_scaled(1:Nr), 2*(1:Nc)-1)=Img_in;2、将图像信息二值化for i=1:Nrfor j=1:1:2*Ncif Img_scaled(i,j) 128Img_scaled(i,j)=255;else秘密图像像素 概率p 分存
6、图像1对应像素组合 分存图像2对应像素组合 叠加像素0.50.50.50.5Img_scaled(i,j)=1;endendendfigure;imshow(Img_scaled,);3、运行结果如下任务一结果:任务二:使用示例代码加密此Lena图像。任务二步骤:1、将图像信息读入,并扩展像素。function visualcryptography()clear all; close all;Img_in = imread(lena.tiff); %读入图像Nr, Nc = size(Img_in);Img_scaled = zeros(Nr, 2*Nc);Img_scaled(1:Nr),
7、2*(1:Nc)=Img_in; %将像素扩展为2个像素Img_scaled(1:Nr), 2*(1:Nc)-1)=Img_in;for i=1:Nrfor j=1:1:2*Ncif Img_scaled(i,j) 128 %Img_scaled(i,j)=255;elseImg_scaled(i,j)=1;endendend2、根据像素值替换原始像素。Share1 = zeros(Nr,2*Nc); %将一幅图分为两个子图share1和share2Share2 = zeros(Nr,2*Nc);for i=1:Nr %Nr行for j=1:2:2*Nc %2*Nc列if Img_scaled
8、(i,j) = 1 % white pixelrandomflip = normrnd(0,1,1,1)0;if randomflipShare1(i,j)=0; Share1(i,j+1)=1;Share2(i,j)=0; Share2(i,j+1)=1;else Share1(i,j)=1; Share1(i,j+1)=0;Share2(i,j)=1; Share2(i,j+1)=0;endelse randomflip = normrnd(0,1,1,1)0;If randomflipShare1(i,j)=0; Share1(i,j+1)=1;Share2(i,j)=1; Share2
9、(i,j+1)=0;else Share1(i,j)=1; Share1(i,j+1)=0;Share2(i,j)=0; Share2(i,j+1)=1;endend % end of ifendendfigure; %绘图程序subplot(4,1,1); imshow(Img_scaled,);subplot(4,1,2); imshow(Share1,);subplot(4,1,3); imshow(Share2,);subplot(4,1,4); imshow(Share1+Share20,);3、注:Normrnd(): 产生随机数,我们在程序里利用它实现以概率0.5选择两种替换所需
10、要的随机掷硬币功能。Share1和Share2分别是产生的两个分发给用户的图片。运行结果如下图所示:任务三:在加密后的图片上添加噪声(例如用randn,normrnd等函数),然后重建原始图像,观察噪声对算法性能的影响。任务三步骤:1、将图像信息读入,并扩展像素。function visualcryptography()clear all; close all;Img_in = imread(lena.tiff); %读入图像Nr, Nc = size(Img_in);Img_scaled = zeros(Nr, 2*Nc);Img_scaled(1:Nr), 2*(1:Nc)=Img_in;
11、 %将图像拓展为两列Img_scaled(1:Nr), 2*(1:Nc)-1)=Img_in;for i=1:Nrfor j=1:1:2*Ncif Img_scaled(i,j) 128 %将图像二值化,大于128的为255,Img_scaled(i,j)=255; 小于128的为0else Img_scaled(i,j)=0;endendend2、根据像素值替换原始像素。Share1 = zeros(Nr,2*Nc); %将整图分为两个子图Share2 = zeros(Nr,2*Nc);for i=1:Nrfor j=1:2:2*Ncif Img_scaled(i,j) = 0 % whit
12、e pixelrandomflip = normrnd(0,1,1,1)0;if randomflipShare1(i,j)=0; Share1(i,j+1)=255;Share2(i,j)=0; Share2(i,j+1)=255;else Share1(i,j)=255; Share1(i,j+1)=0;Share2(i,j)=255; Share2(i,j+1)=0;endelse randomflip = normrnd(0,1,1,1)0;if randomflipShare1(i,j)=0; Share1(i,j+1)=255;Share2(i,j)=255; Share2(i,j
13、+1)=0;elseShare1(i,j)=255; Share1(i,j+1)=0;Share2(i,j)=0; Share2(i,j+1)=255;endend % end of ifendend3、给加密后的图片加入噪声,其中A代表噪声系数 15 75 175A=175; %A为噪声系数noise=A*randn(size(Img_scaled); %用randn产生噪声Share1=Share1+noise; %给子图1叠加噪声Share2=Share2+noise; %给子图2叠加噪声figure(1); %显示图像subplot(1,2,1); imshow(Img_scaled,
14、);subplot(1,2,2); imshow(Share1+Share21,);4、注:Normrnd(): 产生随机数,我们在程序里利用它实现以概率0.5选择两种替换所需要的随机掷硬币功能。Randn():产生标准正态分布的随机数或矩阵的函数,可用于噪声的产生;Share1和Share2分别是产生的两个分发给用户的图片。运行结果如下图所示:噪声系数A=0的时候噪声系数A=15的时候噪声系数A=75的时候噪声系数A=175的时候任务四:改进算法。上述算法加密后,图像的长宽比发生了变化,可以设计一个2x2大小的图像块,可保证加密后长宽比不变。例如参考论文“VisualCryptography
15、Naor”中的图1所使用的图像块。任务四步骤:1、将图像信息读入,并扩展像素。function visualcryptography()clear all; close all;Img_in = imread(lena.tiff); %读入图像Nr, Nc = size(Img_in);Img_scaled = zeros(2*Nr, 2*Nc); %拓展为2*2图像Img_scaled(2*(1:Nr), 2*(1:Nc) =Img_in; %将图像值赋给2列Img_scaled(2*(1:Nr), 2*(1:Nc)-1)=Img_in;Img_scaled(2*(1:Nr)-1, 2*(1
16、:Nc) =Img_in; %将图像值赋给2行Img_scaled(2*(1:Nr)-1, 2*(1:Nc)-1)=Img_in;for i=1:2*Nrfor j=1:1:2*Ncif Img_scaled(i,j) 128 %将灰度图像转换为二值图像Img_scaled(i,j)=255;else Img_scaled(i,j)=0;endendend2、根据像素值替换原始像素。Share1 = zeros(2*Nr,2*Nc);Share2 = zeros(2*Nr,2*Nc);for i=1:2*Nrfor j=1:2:2*Ncif Img_scaled(i,j) = 255 % bl
17、ack pixelrandomflip = normrnd(0,1,1,1)0;if randomflipShare1(i,j) =0; Share1(i,j+1) =255;Share1(i+1,j)=255; Share1(i+1,j+1)=0;Share2(i,j) =255; Share2(i,j+1) =0;Share2(i+1,j)=0; Share2(i+1,j+1)=255;elseShare1(i,j) =255; Share1(i,j+1) =0;Share1(i+1,j)=0; Share1(i+1,j+1)=255;Share2(i,j) =0; Share2(i,j+
18、1) =255;Share2(i+1,j)=255; Share2(i+1,j+1)=0;endelserandomflip = normrnd(0,1,1,1)0;if randomflipShare1(i,j) =255; Share1(i,j+1) =0;Share1(i+1,j)=0; Share1(i+1,j+1)=255;Share2(i,j) =255; Share2(i,j+1) =0;Share2(i+1,j)=0; Share2(i+1,j+1)=255;elseShare1(i,j) =0; Share1(i,j+1) =255;Share1(i+1,j)=255; Sh
19、are1(i+1,j+1)=0;Share2(i,j) =0; Share2(i,j+1) =255;Share2(i+1,j)=255; Share2(i+1,j+1)=0;endendendendfigure;subplot(2,2,1); imshow(Img_scaled,);subplot(2,2,2); imshow(Share2,);subplot(2,2,4); imshow(Share2,);subplot(2,2,3); imshow(Share1+Share21,);3、Normrnd(): 产生随机数,我们在程序里利用它实现以概率0.5选择两种替换所需要的随机掷硬币功能
20、。Share1和Share2分别是产生的两个分发给用户的图片。运行结果如下图所示:5. 实验测试条件、配置和结果本次试验用到的图像时Lena图,格式是tiff,像素是512X512。所做的处理:1、对图像的二值化;2、对图像的加密;3、对图像加噪声。6. 结论根据上述试验,本设计较好地完成了设计任务。本实验的优势是可以讲任意的灰度图像进行加密。而且可以抵抗一定程度的噪声干扰;不过,缺点也在于此,本设计的算法,并没有很大的噪声容限。很容易使图像失真。为了尽可能消除噪声的影响,需要对算法进行改进,将原本的一个像素点拓展为更多的像素点。7. 参考文献1 NAOR M, SHAMIR A. Visual cryptography J. Advances in Cryptography, Lecture Notes in ComputerScience,Springer,1995,950:1-12.2 陈恭亮 信息安全数学基础【M】,清华大学出版社,2004.6,北京;3 张福泰,李继国.密码学教程【M】.武汉大学出版社,2006.9,武汉;4 HOUYC.VisualcryptographyforcolorimagesJ.PatternRecognition,2003,36:1619-1629.