LSB图像信息隐藏实验

合集下载

信息隐藏实验报告一图像的位平面,LSB和MSB

信息隐藏实验报告一图像的位平面,LSB和MSB

信息隐藏实验报告一实验名称:图像的位平面,LSB 和MSB一、实验目的图像的位平面,LSB 和MSBLSB(Least Significant Bits):最不重要位(或最低有效位) MSB(Most Significant Bits):最重要位。

二、实验内容⑴用“按位与”运算清image 的第2、3、4、5、6、7位,结果分别保存在图像矩阵data02、 data03、 data04、 data05、 data06、 data07中,并显示所得结果;⑵用“按位与”运算取image 的第2、3、4、5、6、7位,结果分别保存在图像矩阵data12、 data13、 data14、 data15、 data16、 data17中,并显示所得结果;⑶用“按位与”运算清image 的第1-2、1-3、1-4、1-5、1-6、1-7位,结果分别保存在图像矩阵data02、 data03、 data04、 data05、 data06、 data07中,并显示所得结果; ⑷用“按位与”运算取image 的第3-8、4-8、5-8、6-8、7-8位,结果分别保存在图像矩阵data13、 data14、 data15、 data16、 data17中,并显示所得结果;⑸将彩色图像dsc.jpg 读入图像矩阵image ,重做上面的⑴-⑷项要求;⑹取彩色图像矩阵image 的某个分量(R 、G 、B 均可),重做上面的⑴-⑷项要求;三、实验环境matlab7.0四、基本原理(算法思想)时域是对应于变换域而言的,即不对信号做任何频率变换而得到的信号域就是时域。

对于图像载体,其信号空间也就是像素的取值空间。

我们选择了RGB 颜色空间下的像素作为分析对象。

在RGB 颜色空间中,每一个像素都有三个分量,即红(Red)、绿(Green)、蓝(Blue)分量。

五、实验结果与结论(主要的程序代码、运行结果)⑴用“按位与”运算清image 的第2、3、4、5、6、7位,结果分别保存在图像矩阵data02、 data03、 data04、 data05、 data06、 data07中,并显示所得结果;教师签名2007.11实验时间成绩评 定信息隐藏 课程名称同组人姓 名 05软件工程班 级 计算机科学与技术系别⑵用“按位与”运算取image的第2、3、4、5、6、7位,结果分别保存在图像矩阵data12、data13、 data14、 data15、 data16、 data17中,并显示所得结果;⑶用“按位与”运算清image的第1-2、1-3、1-4、1-5、1-6、1-7位,结果分别保存在图像矩阵data02、 data03、 data04、 data05、 data06、 data07中,并显示所得结果;⑷用“按位与”运算取image的第3-8、4-8、5-8、6-8、7-8位,结果分别保存在图像矩阵data13、 data14、 data15、 data16、 data17中,并显示所得结果;⑸将彩色图像dsc.jpg读入图像矩阵image,重做上面的⑴-⑷项要求;代码略清image的第2、3、4、5、6、7位取image的第2、3、4、5、6、7位清image的第1-2、1-3、1-4、1-5、1-6、1-7位⑹取彩色图像矩阵image的某个分量(R、G、B均可),重做上面的⑴-⑷项要求;代码image=imread('dsc.jpg');%将彩色图像读入图像矩阵image A=image(:,:,1);下略清image的第2、3、4、5、6、7位取image的第2、3、4、5、6、7位清image的第1-2、1-3、1-4、1-5、1-6、1-7位六、实验总结通过这次实验使我对图像的位平面有了一定的认识。

lsb信息隐藏

lsb信息隐藏

LSB算法的信息隐藏实验单位:三系一队姓名:马波学号:3222008030LSB信息隐藏实验一、实验目的1.掌握LSB算法原理2.熟悉信息隐藏与提取的流程3.锻炼算法的程序实现能力二、实验原理1.信息隐藏用秘密信息比特替换载体中的最不重要部分,可以达到对信息隐藏的目的。

在数字图像中,每个字节的最低位对图像信息的影响最小,因此将数字图像的最低位用信息比特替换可以实现信息隐藏。

由于载体图像的每个字节只隐藏一个秘密信息比特,所以只有当载体图像的大小是秘密信息大小的8倍以上时才能完整的将秘密信息隐藏。

提取信息位并隐藏的示意图:2.信息提取在隐藏了秘密信息的数字图像中,每个字节的最低位就是秘密信息比特位,只需将这些信息比特提取出来并组合,就可以恢复出原来的秘密信息。

提取信息示意图:三、实验内容A.将秘密信息隐藏在载体的最低位,检验算法的鲁棒性(1)读入秘密信息(此实验中秘密信息为二值图像)(2)把秘密信息的比特位放入载体的最低位(3)给隐藏了秘密信息的图像加入大小为1的噪声加入噪声大小为1时:加入噪声为2时:B.将秘密信息隐藏在载体的最高位,检验算法的鲁棒性(1)读入秘密信息(此实验中秘密信息为二值图像)(2)把秘密信息的比特位隐藏在载体的最高位(3)分别给隐藏了秘密信息的图像加入大小为1和2的噪声C.将秘密信息隐藏在载体的第三位,检验算法的鲁棒性(1)同A中的(1)(2)把秘密信息比特位隐藏在载体的第三位(3)分别给隐藏了秘密信息的图片加入大小为1、2和3的噪声五、实验总结1.当秘密信息隐藏在最低位时,对载体的改变小,载体质量较高。

但鲁棒性较差,有噪声干扰时很容易发生信息丢失从而无法恢复出秘密信息2.当秘密信息隐藏在最高位时,图像的鲁棒性增强,受到较大噪声干扰时仍能恢复出秘密信息,但对图像的改变较大,隐藏的位数越高图像的质量越低。

3.当隐藏的信息位介于最低位和最高位时,选择合适的位置,既可以提高信息隐藏的鲁棒性,又对图像的质量影响不大,所以,进行信息隐藏时可以考虑LSB的改进。

信息隐藏实验(LSB隐写,随机LSB隐写,RS隐写分析)

信息隐藏实验(LSB隐写,随机LSB隐写,RS隐写分析)

信息隐藏实验二LSB隐写分析姓名:周伟康学号:班级:一:实验要求1、针对自己实现的隐写算法(嵌入、提取),计算隐蔽载体的PSNR值,通过PSNR值来评估隐写对图像质量的影响,并与主观感受做对比。

2、实现一种隐写分析方法,对隐蔽载体进行检测(卡方、RS……)二:实验步骤1、编写随机选点函数,完善顺序和随机两种LSB信息嵌入和提取。

%随机间隔选点函数%[row, col] = randinterval(test, 60, 1983);function [row, col] = randinterval(matrix, count, key)[m, n] = size(matrix);interval1 = floor(m * n / count) + 1;interval2 = interval1 - 2;if interval2 == 0error('载体太小,不能将秘密消息隐藏其内!');endrand('seed', key);a = rand(1, count);%initializerow = zeros([1 count]);col = zeros([1 count]);r = 1; c = 1;row(1,1) = r;col(1,1) = c;for i = 2 : countif a(i) >= 0.5c = c + interval1;elsec = c + interval2;endif c > nr = r + 1;if r > merror('载体太小,不能将秘密消息隐藏其内!');endc = mod(c, n);if c==0c = 1;endendrow(1, i) = r;col(1, i) = c;end选取8*8的矩阵测试2、对比原始图像和隐藏信息后图像,计算隐蔽载体的均方差(MSE)进而计算峰值信噪比(PSNR),评估隐写对图像质量的影响。

空域信息隐藏算法(完成基于LSB的图像信息隐藏)

空域信息隐藏算法(完成基于LSB的图像信息隐藏)

空域信息隐藏算法(完成基于LSB的图像信息隐藏)最近在上信息隐藏,做⼀个记录⼀,实验要求(1)了解信息隐藏算法的分类⽅式和分类依据(2)理解空域信息隐藏算法的基本思想(3)掌握最低有效位算法原理(4)完成基于LSB的图像信息隐藏⼆、实验内容载体图像为24位真彩⾊bmp图像Lena.bmp,嵌⼊的秘密图像为⿊⽩的bmp图像LSB.bmp,要求采⽤空域信息隐藏算法,将LSB.bmp嵌⼊到Lena.bmp的最低有效位中,同屏显⽰原载体图像、需要嵌⼊的秘密图像、嵌⼊了秘密图像的伪装载体、提取的秘密图像。

以下为实验材料:lena.bmp 和 LSB.bmp隐体:三、实验步骤和设计思想1,使⽤pyhton库,skimage来完成相关的⼟图像处理2,通过skimage库打开隐体,发现只有两个值【255,和 0】所以,其实隐藏时,只要⽤⼀位就可以隐藏隐体,将255使⽤1代替,0不变,将其藏在载体的最后⼀位即可。

3,因为隐体为RGB三通道图像,为了隐藏的更好,使⽤随机数将0和1,随机选定⼀个图层进⾏隐藏,当然为了能够还原原图像,使⽤⼀个seed作为key,这样产⽣的随机数就可以顺序提取。

4,隐藏和提取时,使⽤位运算可轻松的实现数字的⾼低位的存取。

5,将变换后的图⽚进⾏保存,再使⽤相同的key和隐藏信息后的载体,进⾏提取。

6,为了⽅便使⽤,将隐藏的⽅法和过程使⽤,⾯向对象的思想,封装为类。

四,### 代码from skimage import ioimport numpyclass IMG_LSB:def __init__(self, key):self.key = keydef show(self, img):"""显⽰图⽚:param img: 显⽰的图⽚矩阵:return: none"""io.imshow(img)io.show()def create_cover(self, img_cover_name, img_info_name, save_img_name):"""使⽤LSB算法对图像进⾏隐藏,隐藏到使⽤key作为种⼦⽣成的随机数指定的RGB通道中:param img_cover_name: 载体图⽚名:param img_info_name: 隐体图⽚名:param save_img_name: LSB⽣成后的图⽚保存位置以及名字:return: LSB⽣成后的图⽚矩阵"""img_info = io.imread(img_info_name)img_cover = io.imread(img_cover_name)self.show(img_info)self.show(img_cover)self.ls_info = img_info.shape[0] # 得到隐体图⽚的长和宽self.ls_cover = img_cover.shape[0] # 得到载体的长和宽if self.ls_info > self.ls_cover:print("载体太⼩")# 开始隐藏numpy.random.seed(self.key)for i in range(0, self.ls_info):for j in range(0, self.ls_info):if img_info[i][j] == 255 : # 如果隐体为255则藏在R层最低为置为1img_cover[i, j, numpy.random.randint(0, 3)] |= 1 # 随机选定⼀个通道进⾏隐藏else:img_cover[i, j, numpy.random.randint(0, 3)] &= 254 # 如果隐体为0则藏在R层最低为置为0self.show(img_cover)io.imsave(save_img_name, img_cover)return img_coverdef extract_img(self, blmb_name, save_img_name):"""对隐体进⾏提取并显⽰:param blmb_name: LSB⽣成的含有隐体的载体名:param save_img_name: 提取后的隐体存储的位置:return: 提取后的隐体的矩阵"""blmb = io.imread(blmb_name)matrix = [[255 for i in range(self.ls_info)] for i in range(self.ls_info)] # ⽣成与隐体相同⼤⼩的矩阵,并赋值为255re_info_img = numpy.array(matrix, dtype=numpy.uint8) # 将⽣成的矩阵转化为可存储图像的8位格式self.show(re_info_img)# 开始提取numpy.random.seed(self.key)for i in range(0, self.ls_info):for j in range(0, self.ls_info):randint_value = numpy.random.randint(0, 3) # 使⽤seed控制随机数的⽣成保证与之前隐藏时,⽣成的随机数⼀致 blmb[i, j, randint_value] &= 1 # 取出最后⼀位if blmb[i, j, randint_value] == 0:re_info_img[i][j] &= 0 # 如果最后⼀位为0则隐体原处为0,为1则为255else:re_info_img[i][j] |= 255io.imsave("img/re_img.bmp", re_info_img)self.show(re_info_img)return re_info_img# 测试if __name__ == '__main__':img = IMG_LSB(123) # key为123img.create_cover("img/Lena.bmp", "img/LSB.bmp", "img/blmb2.bmp")img.extract_img("img/blmb2.bmp", "img/re_img.bmp")。

信息隐藏 实验十 LSB信息隐藏的卡方分析

信息隐藏 实验十 LSB信息隐藏的卡方分析

实验十 LSB 信息隐藏的卡方分析一,实验目的:了解什么是隐写分析,隐写分析与信息隐藏和数字水印的关系。

掌握基于图像的LSB 隐写的分析方法,设计并实现一种基于图像的LSB 卡方隐写分析方法。

二,实验环境1, Windows XP 操作系统 2, Matlab 软件 3, BMP 格式图片文件 三,实验原理隐写术和隐写分析技术是互相矛盾又是相互促进的,隐写分析是指对可疑的载体信息进行攻击以达到检测、破坏,甚至提取秘密信息的技术,它的主要目标是为了揭示媒体中隐蔽信息的存在性,甚至只是指出媒体中存在秘密信息的可疑性。

图像LSB 信息隐藏的方法是用嵌入的秘密信息取代载体图像的最低比特位,原来图像的7个高位平面与代表秘密信息的最低位平面组成含隐蔽信息的新图像。

虽然LSB 隐写在隐藏大量信息的情况下依然保持良好的视觉隐蔽性,但使用有效的统计分析工具可判断一幅载体图像中是否含有秘密信息。

目前对于图像LSB 信息隐藏主要分析方法有卡方分析、信息量估算法、RS 分析法和GPC 分析法等。

卡方分析的步骤是:设图像中灰度值为j 的象素数为hj ,其中0≤j ≤255。

如果载体图像未经隐写,h2i 和h2i+1的值会相差很大。

秘密信息在嵌入之前往往经过加密,可以看作是0、1 随机分布的比特流,而且值为0与1的可能性都是1/2。

如果秘密信息完全替代载体图像的最低位,那么h2i 和h2i+1的值会比较接近,可以根据这个性质判断图像是否经过隐写。

定量分析载体图像最低位完全嵌入秘密信息的情况:嵌入信息会改变直方图的分布,由差别很大变得近似相等,但是却不会改变h2i+h2i+1的值,因为样值要么不改变,要么就在h2i 和h2i+1之间改变。

令 显然这个值在隐写前后是不会变的。

如果某个样值为2i ,那么它对参数q 的贡献为1/2;如果样值为2i+1 ,对221*22i i i h h h ++=2212i i h h q +-=参数q 的贡献为-1/2。

LSB图像信息隐藏实验

LSB图像信息隐藏实验

学号:姓名:专业年级班级:实验室:组别:实验日期:课程名称保密技术实验实验课时实验项目名称和序号1.LSB图像信息隐藏实验同组者姓名实验目的1. 掌握对图像的基本操作。

2. 能够用 LSB 算法对图像进行信息隐藏3. 能够用 LSB 提取算法提取隐藏进图像的信息4. 能够反映 jpeg 压缩率与误码率之间的关系实验环境Windows+matlab实验内容和原理1.用 MATLAB 函数实现 LSB 信息隐藏和提取2.分析了 LSB 算法的抗攻击能力3.能随机选择嵌入位(考虑安全性因素)实验步骤方法关键代码实验算法 1:LSB 嵌入1.读取一副 256*256 大小的图片,判断是否为 RGB 图像。

若为 RGB 图像,则读取图像的一层信息(如 R 层)。

通过读取图像的尺寸大小来判断是否为RGB图像。

RGB图像是三维多彩图,size有3个参数,最小参数是3,只要判断读取到的图像大小大于2,就确定读入的是RBG图像2.以二进制形式读取要嵌入到图片里的消息。

并读取消息的长度(嵌入消息的长度不能超过图像位数)。

3.产生与消息长度一致的一串随机数(不能相同)。

自定义一个randinterval函数来实现伪随机数的生成产生的伪随机数是代表消息要隐藏的像素位置(行和列的信息)随机数代码:function [row,col]=randinterval(matrix,count,key)%randinterval.m%参数说明%matrix是载体矩阵,即要隐藏信息的图层%cout为要嵌入信息的像素数量%key为自定义秘钥,随机种子[m,n] = size(matrix);interval1 = floor(m * n/(count+eps)) + 1;interval2 = interval1 - 2;if interval2 == 0error('载体太小不能把秘密信息隐藏进去');endrand('seed',key);a = rand(1, count);row = zeros([1 count]);col = zeros([1 count]);r = 1;c = 1;row(1,1) = r;col(1,1) = c;for i =2:countif a(i) >= 0.5c = c + interval1;elsec = c + interval2;endif c > nr = r + 1;if r > merror('载体太小不能把秘密信息隐藏进去');endc = mod(c, n);if c == 0c = 1;endendrow(1, i) = r;col(1, i) = c;end4.按照产生的随机数的序列依次将图片层的最后一位改为消息的信息。

LSB图像信息隐藏实验

LSB图像信息隐藏实验

LSB图像信息隐藏实验【实验环境】ISES客户端注:请将信息隐藏测试载体放在指定目录下:C:\ISES【实验步骤】一、信息嵌入(一)选择载体图片注:载体图片有BMP、JPG、GIF、PNG四种格式,这里只以JPG格式图片为例。

(1)选择载体图片,进入该实验,点击“选择载体图片”按钮选择合适的要嵌入信息的载体图片,如图4.1.1-1所示。

图4.1.1-1选择载体图片(2)点击“二进制展示”按钮可以二进制形式查看图片,如图4.1.1-2所示。

图4.1.1-2以二进制查看图片(3)点击“计算”按钮,可查看图片信息,如图4.1.1-3所示。

图4.1.1-3查看图片信息(二)选择要隐藏文件(1)点击“选择要隐藏的文件”按钮选择要嵌入的信息文件,并点击“计算”按钮查看信息内容。

如图4.1.1-4所示。

需注意的是要嵌入的信息数据大小应小于载体容量,且最好为文本文件,以便对比观察原始信息与提取的信息。

图4.1.1-4选择要隐藏文件(2)点击“二进制转换”按钮,查看隐藏信息的二进制流,如图4.1.1-5所示。

图4.1.1-5以二进制流形式查看隐藏信息(三)嵌入信息(1)点击“嵌入”按钮,将隐藏信息嵌入到载体图片中,并另存为成新的带有隐藏信息的图片,如图4.1.1-6所示。

图4.1.1-6嵌入信息成功(2)点击“确定”按钮,弹出图片对比窗口,如图4.1.1-7所示。

图4.1.1-7图片对比窗口(3)可通过选项卡选择图片对比及细节对比,以对比原始载体图片和嵌入信息后的载体是否存在视觉上的可觉察的变化,并观察载体文件嵌入前后的细节变化。

(四)观察嵌入信息过程(1)点击“读取信息”及“读取水印”按钮,读取载体的一个字节信息及水印的一位信息,如图4.1.1-8所示。

图4.1.1-8读取信息(2)点击“嵌入1”按钮,执行嵌入操作,如图4.1.1-9所示。

图4.1.1-9嵌入信息(3)点击“嵌入”按钮,循环执行上述过程将全部信息嵌入到载体图片中,并保存、对比结果。

LSB图像信息隐藏

LSB图像信息隐藏

LSB图像信息隐藏1.实验⽬的(1)了解信息隐藏中最常⽤的LSB算法特点,掌握LSB算法原理,设计并实现⼀种基于图像的LSB隐藏算法(2)了解如何通过峰值信噪⽐来对图像质量进⾏客观评价,并计算峰值信噪⽐2.实验内容(1)LSB隐藏算法(2)计算峰值信噪⽐3.实验原理 任何多媒体信息,在数字化时,都会产⽣物理随机噪声,⽽⼈的感观系统对这些随机噪声不敏感。

替换技术就是利⽤这个原理,通过使⽤秘密信息⽐特替换随机噪声,从⽽完成信息隐藏⽬标。

BMP灰度图像的位平⾯,每个像素值为8bit⼆进制值,表⽰该点亮度。

图像⾼位平⾯对图像感官质量起主要作⽤,去除图像最低⼏个位平⾯并不会造成画⾯质量的明显下降。

利⽤这个原理可⽤秘密信息(或称⽔印信息)替代载体图像地位平⾯以实现信息嵌⼊。

算法选⽤最低位平⾯来嵌⼊秘密信息。

最低位平⾯对图像的视觉效果影响最轻微,但很容易受噪声影响和攻击,解决办法可采⽤冗余嵌⼊的⽅式来增强稳健性。

即在⼀个区域(多个像素)中嵌⼊相同的信息,提取时根据该区域中的所有像素判断。

4.实验记录(1)隐藏算法算法分为三个部分实现:隐藏算法提取算法测试脚本1)隐藏算法源代码hide_lsb.m⽂件:function o=hide_lsb(block,data,I) %block:隐藏的最⼩分块⼤⼩ data:秘密信息 I:原始载体si=size(I);lend=length(data);% 将图像划分为M*N个⼩块N=floor(si(2)/block(2));M=min(floor(si(1)/block(1)),ceil(lend/N));o=I;for i=0:M-1% 计算每⼩块垂直⽅向起⽌位置rst=i*block(1)+1;red=(i+1)*block(1);for j=0:N-1% 计算每⼩块隐藏的秘密信息的序号idx=i*N+j+1;if idx>lendbreak;end;% 取每⼩块隐藏的秘密信息bit=data(idx);% 计算每⼩块⽔平⽅向起⽌位置cst=j*block(2)+1;ced=(j+1)*block(2);% 将每⼩块最低位平⾯替换为秘密信息o(rst:red,cst:ced)=bitset(o(rst:red,cst:ced),1,bit);endend;2)提取算法源代码dh_lsb.m⽂件:function out=dh_lsb(block,I) % block:隐藏的最⼩分块⼤⼩ I:携密载体si=size(I);% 将图像划分为M*N个⼩块N=floor(si(2)/block(2));M=floor(si(1)/block(1));out=[];% 计算⽐特1判决阈值:即每⼩块半数以上元素隐藏的是⽐特1时,判决该⼩块嵌⼊的信息为1thr=ceil((block(1)*block(2)+1)/2);idx=0;for i=0:M-1% 计算每⼩块垂直⽅向起⽌位置rst = i*block(1)+1;red=(i+1)*block(1);for j=0:N-1% 计算每⼩块图像隐藏的秘密信息序号idx=i*N+j+1;% 计算每⼩块⽔平⽅向起⽌位置cst=j*block(2)+1;ced=(j+1)*block(2);% 提取⼩块最低位平⾯,统计1⽐特个数,判决输出秘密信息tmp=sum(sum(bitget(I(rst:red,cst:ced),1)));if(tmp>=thr)out(idx)=1;elseout(idx)=0;end;end;end;3)测试脚本源代码test.m⽂件:fid=1;len=10;% 随机⽣成要隐藏的秘密信息d=randsrc(1,len,[0,1]);block=[3,3];[fn,pn]=uigetfile({'*.bmp','bmp file(*.bmp)';},'选择载体');s=imread(strcat(pn,fn));ss=size(s);if(length(ss)>=3)I=rgb2gray(s);elseI=s;end;si=size(I);sN=floor(si(1)/block(1))*floor(si(2)/block(2));tN=length(d);% 如果载体图像尺⼨不⾜以隐藏秘密信息,则在垂直⽅向上复制填充图像if sN<tNmultiple=ceil(tN/sN);tmp=[];for i=1:multipletmp=[tmp;I];end;I=tmp;end;% 调⽤隐藏算法,把携密载体写⾄硬盘stegoed=hide_lsb(block,d,I);imwrite(stegoed,'hide.bmp','bmp');[fn,pn]=uigetfile({'*.bmp','bmp file(*.bmp)';},'选择隐蔽载体');y=imread(strcat(pn,fn));sy=size(y);if(length(sy)>=3)I=rgb2gray(y);elseI=y;end;% 调⽤提取算法,获得秘密信息out=dh_lsb(block,I);% 计算误码率len=min(length(d),length(out));rate=sum(abs(out(1:len)-d(1:len)))/len;y=1-rate;fprintf(fid,'LSB:len:%d\t error rate:%f\t error num:%d\n',len,rate,len*rate);通过运⾏测试代码,对灰度图xxx3.bmp⽂件进⾏LSB算法的信息隐藏,并⽣成⽂件bide.bmp。

信息加密与解密实验11-2 LSB图像信息隐藏原理

信息加密与解密实验11-2 LSB图像信息隐藏原理

上机实验报告一、实验目的:1、掌握LSB图像信息隐藏原理2、简单使用matlab工具二、实验环境计算机一台Matlab三、实验内容(一)预备知识1、信息隐藏信息隐藏( Information Hiding)又称为信息伪装,是指在不使信息载体本身发生显著变化的前提下,将需要保密传递的信息隐藏到载体中,从而达到隐蔽传递目的的技术。

信息隐藏原理图2、图像的数据表示对下图所示8×8(64个像素点)的图像,每一个像素点的灰度值量化时可以取值为0到255(用8bit表示)。

因此,分辨率为m×n的数字图像文件就可以用m×n×8的三维矩阵存储。

图中从高到低可分为8个位平面,分别对应着8个灰度值比特位所在的平面。

对于数字图像,这8个位平面在图像中所代表的重要程度是不同的,其最低的1至2个比特位基本上是噪声,所在的位平面没有太多图像的有用信息,对这些位平面信息的改变,对整个图像没有明显的影响。

3、LSB算法的原理图像的能量集中在高几层位平面,图像对高几层的修改比较敏感;图像的最低位平面甚至是最低的几层位平面几乎不含有信息量,对修改不敏感;可以用保密信息去替换原始载体的最低位平面或最低几层位平面,从而实现信息隐藏,而又不致使载体发生视觉上的可察觉性改变。

4、LSB算法描述用所要隐藏的二值图像去替换载体图像8层位平面中的最低层,这就是LSB (least-significant bits)嵌人算法的核心。

提取隐藏信息时,只需要将载体图像最低层位平面取出,恢复成二值图像即可。

(二)使用LSB算法实现图像信息隐藏1、安装matlab7.12、桌面上找到matlab7.1的快捷方式,打开lsb代码(代码可在lsb中找到),修改“Current Folder”的路径为代码路径。

3、找到readme.txt可以查看.m文件里的大概内容,在左侧分别双击lsbmain.m,submain.m,先后运行程序。

LSB图片信息隐藏隐藏实验

LSB图片信息隐藏隐藏实验

上海电力学院高级程序设计(C)课程设计报告LSB信息隐藏实验题目:院系:计算机科学与技术学院专业年级:信息安全2012级学生姓名:涂桂花学号:指导教师:魏为民2015年4月14日目录一、实验目的 0二、实验内容和步骤 01. 操作环境 02. 系统配置 03. 操作步骤 04. 程序源代码 (3)三、实验结果 (3)1. 测试图片 (3)2. 测试结果 (3)3.截屏 (4)四.实验小结 (4)1. 遇到的问题总结合分析: (4)2. 未解决的问题 (4)3. 实验效果和分析 (4)4. 总结: (4)附件: (5)上 海 电 力 学 院实 验 报 告 课程名称实验项目 姓名 学号 班级 专业同组人姓名 指导教师 魏为民 实验日期 一、实验目的1.用MATLAB 函数实现LSB 信息隐藏和提取。

2.了解信息隐藏的作用和实现方法原理。

3.学会分析了解隐藏算法。

二、实验内容和步骤如操作环境、系统配置、操作步骤、程序源代码等。

1.操作环境操作系统 Windows 7 旗舰版 64位 SP1 ( DirectX 11 )2.系统配置处理器 AMD E1-2100 APU with Radeon HD Graphics 双核3.操作步骤1) 打开MATLAB 软件,新建文件夹名为“ LSB ”。

2) 在“Command Window ”窗口里输入“guide ”,回车。

a. 如下图所示建立图形界面。

将5个push button 控件的“String ”属性设置为下图相应显示的名字,Tag 属性设置为pbt+String 名的格式。

将4个axec 控件的Tag 属性设置为如下图所显示的名字。

3) 分别右键点击5个push button 控件,View Callbacks->CallBacks.给每个控件添加信息安全 LSB 信息隐藏实验 涂桂花 20123333 2012252 信息安全 无Callback代码。

信息安全实验4 图像信息隐藏

信息安全实验4 图像信息隐藏

实验要求: 算法分两部分: ① 水印嵌入算法; ② 判断图像是否篡改的算法。
1. 将所有像素每连续8个分成一组,每组中的8个像素的高7位依 次提取出来组成一个56位的二进制数据;
2. 第1组和第2组像素组成的56位二进制数逐位异或操作得到一个 56位的校验和,然后利用这个校验再和第三组像素组成的56位 二进制数逐位异或操作再得到一个56位的校验和,一次这样操 作直到最后一组,然后得到最终的56位校验和。
图像像素值大小在计算机中用二进制存储,其最低位对图像感官 质量影响较小,更改后不会造成图像质量的明显下降,可以利用这个 原理用秘密信息比特流替换图像像素值得最低有效位来实现隐藏传递 秘密信息的目的。BMP灰度图像的位平面图如下图,每个像素占8比 特的存储空间:
像素值的高位,改变 后对视觉影响较大, 一般不用于隐藏信息
3. 在图像中随机选取56个像素点,将上述得到的最终校验和利用 LSB算法嵌入到这56个像素中后生成一个加了水印的图片。
4. 利用相同的算法计算3中加水印图像的校验和,然后提取出嵌 入的校验和,两者进行比对判断图像是否被篡改,结果应该是 没有篡改。
5. 用画图软件改变3中加水印的图像,再利用4中完成的程序验证 图像是否被篡改,结果应该是被篡改。
图像像素值大小在计算机中用二进制存储其最低位对图像感官质量影响较小更改后不会造成图像质量的明显下降可以利用这个原理用秘密信息比特流替换图像像素值得最低有效位来实现隐藏传递秘密信息的目的
实验4 –图像信息隐藏
指导老师:陈国永 18684983863,余应波 15116165316,殷娇娇 15111221107
像素值的低位,改变 后对视觉影响较小1100100,现假如要隐藏一个1,则像 素变成1100101。

信息隐藏实验报告LSB隐写分析

信息隐藏实验报告LSB隐写分析

《信息隐藏技术》实验报告实验3:LSB信息隐藏攻击实验杭州电子科技大学网络空间安全学院一、实验目的1.主要内容对实验1中信息隐藏后的图像进行隐写分析。

2.基本要求要求学生能够将没有嵌入信息的图像和隐藏信息的图像区分开来。

二、实验内容及实现过程步骤1.可视攻击针对LSB 算法,通过可视攻击进行视觉比较,观察含隐藏信息与不含隐藏信息图像的不同。

原图嵌入LSB 水印2.概率分布分析方法(χ2分析)统计LSB 信息隐藏后,图像的像素灰度值的直方图,结合χ2分布密度函数计算载体含有秘密信息的概率值。

提取最低有效位 提取最低有效位部分分块概率为1,不确定含有秘密信息大部分分块的概率为1,可以确定含有秘密信息部分分块概率为1,不确定含有秘密信息大部分分块的概率为1,可以确定含有秘密信息三、实验结果分析计算隐秘分析算法判断结果的错误率:FP (false positive):没有嵌入隐藏信息的图像错误地判断为嵌入了隐藏信息FN (false negative):嵌入隐藏信息的图像错误地判断为没有嵌入隐藏信息判断标准:超过半数的分块概率为1,判别为加密少于半数的分块概率为1,判别为原始图像FP:4/9FN:0/9误判原因分析,图像像素值较低四、实验小结(包括小组分工,组员各自的贡献点;通过实验得出的结论;对隐写分析加深的理解)设计算法:邢征宇(卡方分析)刘煜程(可视攻击)结果分析:单志晗(FP)梁经纬(FN)总结:1. 能够真正理解两种方法的思想和每一个处理步骤的作用,才能真正写出matlab 程序并进行结果分析;2. 8 位的像素值从0 开始到255,但是数组的下标从1 开始到256,所以像素值的2i 对应数组下标2i-1,像素值的2i+1 对应数组下标2i,像素值只存在2i->2i+1 的变换,对应于只存在2i-1->2i 的下标值变换,在编写代码时需注意此类细节,否则实验结果将大打折扣;3. 当实验结果与预期的有偏差,不仅仅是检查理解实验有偏差、程序是否正确,而且需要改变不同的实现方法、不同的参数以及利用不同的图像来进行测试和比较,这样才可能更快判断出问题出在哪里,并找到解决办法,而且有的时候不一定是代码有误的问题。

信息隐藏基础实验

信息隐藏基础实验

实验一基于图像的LSB信息隐藏算法一、实验目的1、了解和熟悉数字图像的读入和显示等基本操作。

2、了解不同“位平面”对图像质量的影响。

3、掌握不同图像格式之间的转换方法。

4、熟悉和掌握基于图像的LSB信息隐藏算法。

5、掌握对LSB算法的不可感知性的客观评价。

6、掌握LSB提取算法。

二、实验内容1、结合EXZAMPLE.M,查看不同“位平面”对图像质量的影响。

(1)运行example.m程序,将“位平面”的第7、8位设置为‘0’,得到如下结果,如图所示:由图分析得:去掉第7、8为,此两位(低位)对图像质量没有明显影响,没有携带图像的有用信息。

(2)运行example.m程序,将“位平面”的第3、4位设置为‘0’,得到如下结果,如图所示:由上图分析:对比左右两幅图像,可以看出去掉第3、4位对图像质量有较为明显的影响,携带有图像的有用信息。

(2)运行example.m程序,将“位平面”的第1、2位设置为‘0’,得到如下结果,如图所示:由图分析:对比左右两幅图像,可以看出去掉第1、2位对图像质量产生非常大的影响,携带有图像的大量有用信息。

由此程序可以得出,不同“位平面”对图像的质量有不同程度的影响,第1、2位携带有有用信息,而第7、8位不含有图像的有用信息。

2、运行water.m程序,理解不同图像格式之间的转换方法。

运行water.m程序,得到如下结果,如图所示:分析:可以在图像不同格式(RGB、灰度、二值)之间进行转换。

3、阅读并"完善" imbed.m内容,掌握基于图像的LSB信息隐藏算法。

(1)填写完善imbed.m程序,填写部分如下所示:(2)运行已完善的imbed.m程序,得到如下结果,如下图所示:分析:将水印嵌入灰度图像的“位平面”第N=6位,得到上图右图所示,与原图视觉效果没有区别,嵌入成功。

4、编写matlab函数:sse(f,f0)、mse(f,f0)、psnr(f,f0),实现对上述算法不可感知性的客观评价。

LSB算法实现BMP图像中的信息隐藏及提取

LSB算法实现BMP图像中的信息隐藏及提取

实验4 LSB算法实现位图图像中的信息隐藏及提取马亮,njnu一、实验目的通过对LSB算法的编程实现,深入理解该算法的设计思想及其应用。

二、实验类型程序设计。

三、实验原理LSB是L.F.Turner和R.G.van Schyndel等人提出的一种典型的空间域信息隐藏算法。

考虑人视觉上的厄不可见性缺陷,信息一般嵌入到图像最不重要的像素位上,如最低几位。

利用LSB算法可以在8色、16色、256色以及24位真彩色图像中隐藏信息。

对于256色图像,在不考虑压缩的情况下,每个字节存放一个像素点,那么一个像素点至少可以隐藏1位信息,一张640*480像素的256色图像至少可隐藏640*480=307200位(38400字节)的信息。

对于真彩色图像,同样可以按照如上的方法计算可以隐藏的信息量。

四、实验环境(1)系统环境:CPU:Inter® Core™2(2)开发环境:IDE:Microsoft Visual Studio 2005Language:Microsoft C#五、实验内容在上述系统环境和开发环境中编程实现LSB算法,包括信息的隐藏和提取。

六、程序说明(1)程序运行界面如下图所示:图1 信息隐藏界面图2 信息提取界面(2)程序功能说明➢自动计算最大隐藏信息量并给出提示➢可以在24位位图中隐藏大小不超过最大隐藏信息量的任意类型文件➢自动备份原始图片➢自动检测伪装图片中是否包含隐藏信息➢正确提取出LSB中的隐藏信息并还原出文件七、实现过程(1)LSBEncrypt类该类用于实现LSB的信息嵌入算法,类中各字段及方法说明如下:字段private string _originalPicPath 原始图片路径private string _hidingInfoPath 隐藏信息路径private FileStream _picStream 原始图片的文件流private FileStream _infoStream 隐藏信息的文件流方法➢private void HideInfoLength();输入:无输出:无功能:将图像的第55至第66字节的LSB替换为隐藏信息文件的长度➢private void HideInfoContent();输入:无输出:无功能:将隐藏信息以每3个字节写入原始图像从第67字节开始的每12字节块的LSB中➢private byte[] ConvertToBinaryArray(long x);输入:long x 要转换的长整型数,这个数的大小不会超过2的24次方输出:byte[] 二进制表示的字节数组功能:将长整型数转换为24位二进制表示的字节数组➢private byte[] ConvertToBinaryArray(byte[] array);输入:byte[] array 长度为3的字节数组输出:byte[] 二进制表示的字节数组功能:将隐藏信息以每3个字节写入原始图像从第67字节开始的每12字节块的LSB中➢public void ExecuteEncrypt();输入:无输出:无功能:执行信息隐藏操作(2)LSBDecrypt类该类用于实现LSB的信息提取算法,类中各字段及方法说明如下:字段private string _camouflagePicPath 伪装图片的路径private string _infoSavePath 还原出的隐藏信息的保存路径private FileStream _camouflageStream 伪装图片的文件流private FileStream _infoSaveStream 还原出的隐藏信息的文件流方法➢private int GetInfoLength();输入:无输出:int 隐藏信息长度功能:从伪装图片的第55至第66字节中提取出隐藏信息的长度➢private byte[] ExtractHidingBits(byte[] arr);输入:byte[] arr 长度为12的字节数组,含有隐藏信息输出:byte[] 从12字节块中提取出的3字节隐藏信息功能:利用位操作提取伪装文件流中每12字节的LSB位➢public bool ExecuteDecrypt();输入:无输出:bool 执行成功返回true,失败返回false功能:执行信息提取操作八、实验小结及思考(1)程序测试✧信息隐藏载体位图图像:图3 载体图像要隐藏的信息:图4 待隐藏的信息执行信息隐藏算法:图 5 隐藏信息成功信息隐藏选择伪装图片和还原出的隐藏信息的保存路径:图 6 信息提取还原出的文本文件test.txt:图7 还原出的文件(2)实验思考在信息隐藏的研究中,主要研究信息隐藏算法与隐蔽通信。

信息隐藏 实验十 LSB信息隐藏的卡方分析

信息隐藏 实验十 LSB信息隐藏的卡方分析

实验十 LSB信息隐藏的卡方分析一,实验目的:了解什么就是隐写分析,隐写分析与信息隐藏与数字水印的关系。

掌握基于图像的LSB隐写的分析方法,设计并实现一种基于图像的LSB卡方隐写分析方法。

二,实验环境1, Windows XP 操作系统2, Matlab软件3, BMP格式图片文件三,实验原理隐写术与隐写分析技术就是互相矛盾又就是相互促进的,隐写分析就是指对可疑的载体信息进行攻击以达到检测、破坏,甚至提取秘密信息的技术,它的主要目标就是为了揭示媒体中隐蔽信息的存在性,甚至只就是指出媒体中存在秘密信息的可疑性。

图像LSB信息隐藏的方法就是用嵌入的秘密信息取代载体图像的最低比特位,原来图像的7个高位平面与代表秘密信息的最低位平面组成含隐蔽信息的新图像。

虽然LSB 隐写在隐藏大量信息的情况下依然保持良好的视觉隐蔽性,但使用有效的统计分析工具可判断一幅载体图像中就是否含有秘密信息。

目前对于图像LSB信息隐藏主要分析方法有卡方分析、信息量估算法、RS 分析法与GPC分析法等。

卡方分析的步骤就是:设图像中灰度值为j的象素数为hj,其中0≤j≤255。

如果载体图像未经隐写,h2i与h2i+1的值会相差很大。

秘密信息在嵌入之前往往经过加密,可以瞧作就是0、1 随机分布的比特流,而且值为0与1的可能性都就是1/2。

如果秘密信息完全替代载体图像的最低位,那么h2i与h2i+1的值会比较接近,可以根据这个性质判断图像就是否经过隐写。

定量分析载体图像最低位完全嵌入秘密信息的情况:嵌入信息会改变直方图的分布,由差别很大变得近似相等,但就是却不会改变h2i+h2i+1的值,因为样值要么不改变,要么就在h2i与h2i+1之间改变。

令显然这个值在隐写前后就是不会变的。

221*22i iih hh++=2212i ih hq+-=如果某个样值为2i,那么它对参数q 的贡献为1/2;如果样值为2i+1 ,对参数q 的贡献为-1/2。

LSB信息隐藏实验报告

LSB信息隐藏实验报告

Centr al South University信息隐藏实验报告学院: 信息科学与工程学院班级:信息安全1201学号:0909121724姓名:吕秋言时间: 2018年6 月实验一:基于图像的LSB信息隐藏一、实验目的该实验为验证性实验。

目的是通过实验使学生掌握经典信息隐藏算法,在Matlab环境下,编写基于图像的LSB信息隐藏算法程序。

用Matlab函数实现LSB信息隐藏及提取,并进行分析。

b5E2RGbCAP二、实验要求1、实验前要做好充分准备,包括:复习实验所涉及的知识点,掌握Matlab编程语言和调试环境。

2、实验时注意记录实验过程中产生的数据、出现的问题及解决问题的方法。

3、理论联系实际,认真分析实验结果,回答思考题。

4、实验后完成实验报告,并附相关截图。

三、实验环境计算机<安装Visual C++ 6.0和Matlab 6.5以上版本)四、实验原理隐秘算法核心是将我们选取的像素点的最不重要位依次替换成秘密信息,以达到信息隐秘的目的。

嵌入过程包括选择一个图像载体像素点的子集{j1,…,jl(m>},然后在子集上执行替换操作像素cji←→mi,即把cji的LSB与秘密信息mi进行交换(mi可以是1或0>。

一个替换系统也可以修改载体图像像素点的多个比特,例如,在一个载体元素的两个最低比特位隐藏两比特、三比特信息,可以使得信息嵌入量大大增加但同时将破坏载体图像的质量。

在提取过程中,找出被选择载体图像的像素序列,将LSB(最不重要位>排列起来重构秘密信息,算法描述如下:p1EanqFDPw嵌入过程:for(i=1。

i<=像素序列个数。

i++>si←cifor(i=1。

i<=秘密消息长度。

i++>//将选取的像素点的最不重要位依次替换成秘密信息sji←cji←→mi提取过程:for(i=1。

i<=秘密消息长度。

i++>{ i←→ji//序选取mi←LSB(cji>}五、实验内容与步骤基本演示环境:matlabLSB,Least Significant Bits,最低有效位,将图像加密处理。

信息隐藏实验(LSB隐写,随机LSB隐写,RS隐写分析)..

信息隐藏实验(LSB隐写,随机LSB隐写,RS隐写分析)..

信息隐藏实验二LSB隐写分析姓名:周伟康学号:班级:一:实验要求1、针对自己实现的隐写算法(嵌入、提取),计算隐蔽载体的PSNR值,通过PSNR值来评估隐写对图像质量的影响,并与主观感受做对比。

2、实现一种隐写分析方法,对隐蔽载体进行检测(卡方、RS……)二:实验步骤1、编写随机选点函数,完善顺序和随机两种LSB信息嵌入和提取。

%随机间隔选点函数%[row, col] = randinterval(test, 60, 1983);function [row, col] = randinterval(matrix, count, key)[m, n] = size(matrix);interval1 = floor(m * n / count) + 1;interval2 = interval1 - 2;if interval2 == 0error('载体太小,不能将秘密消息隐藏其内!');endrand('seed', key);a = rand(1, count);%initializerow = zeros([1 count]);col = zeros([1 count]);r = 1; c = 1;row(1,1) = r;col(1,1) = c;for i = 2 : countif a(i) >= 0.5c = c + interval1;elsec = c + interval2;endif c > nr = r + 1;if r > merror('载体太小,不能将秘密消息隐藏其内!');endc = mod(c, n);if c==0c = 1;endendrow(1, i) = r;col(1, i) = c;end选取8*8的矩阵测试2、对比原始图像和隐藏信息后图像,计算隐蔽载体的均方差(MSE)进而计算峰值信噪比(PSNR),评估隐写对图像质量的影响。

信息隐藏技术课件第三章图像信息隐藏与水印

信息隐藏技术课件第三章图像信息隐藏与水印

• 其他方法来隐藏信息: 对于调 色板中的每一种颜色,可以通 过修改颜色的蓝色分量(人眼 对于绿色分量最为敏感,对蓝 色分量最不敏感)来增加一种 接近的但不完全相同的颜色, 这样就形成一个扩展的调色板。
• 嵌入算法如下: 对调色板中所 有颜色,把像素点的蓝色分量 增加,然后将这种颜色添加到 调色板中形成一个扩展调色板。 根据需要嵌入的消息长度,随 机选取隐藏的位置,当嵌入0
• Patchwork是指从载体数据中 选择一些数据组成两个集合, 然后通过修改这两个集合之间 的某种关系来携带水印信息。 这两个集合可以是两个系数、 两组系数或者是两个特征量。 两个集合之间的关系可以是大 小关系、能量关系、逻辑关系 和奇偶性关系等。
• Patchwork方法嵌入水印时, 通过修改集合之间的某种关系 来嵌入水印;提取水印时, 则 根据对应的关系来提取嵌入的 水印信息。Patchwork方法最 大优点之一就是可以实现盲检 测。Patchwork可以适用于时/ 空域、变换域和压缩域, 本节 主要介绍时域下的典型 Patchwork方法。
• BMP灰度图像的位平面图如右, 每 个像素值为8bit二进制值, 表示 该点亮度。
• 不同位平面对视觉影响不同, 可 用下面系列图像表示。
• 去除第一位平面的图像和第一位 平面
去除第1-7位平面的Lena图像和第1-7位平面
去除第1-4位 平面的图像和 第1-4位平面
• 图像高位平面对图像感官质量起主要作 用, 去除图像最低几个位平面并不会造 成画面质量的明显下降。利用这个原理 可用秘密信息(或称水印信息)替代载 体图像低位平面以实现信息嵌入。
【实验步骤】
• 1.嵌入秘密信息
• 2.提取秘密信息
• 原始图像和携密图像从视觉 效果上几乎相同。提取时, 首 先 将两个图像块集合的样本 分别 求平均值, 计算两个样 本均值 的差来判断水印信息 是否存在。

信息隐藏实验二-LSB与MSB

信息隐藏实验二-LSB与MSB

2016年1月16日11时1分
顺序选取图像载体像素
实验1.2 嵌入: 1 顺序选取图像载体像素的最低有效位,排列起来 作为秘密信息载体 2 将秘密信息按位替换到载体中 3 将载体重新写入图片 提取: 1 顺序选取图像载体像素的最低有效位,排列起来 作为秘密信息载体 2 提取载体的前n位,n为秘密信息长度
信息隐藏实验二
2015年10月
实验内容

一、LSB与MSB 二、在LSB上的信息隐秘

2.1 顺序隐藏 2.2随机隐藏

ቤተ መጻሕፍቲ ባይዱ
三、在MSB上的信息隐秘
2016年1月16日11时1分
LSB与MSB
LSB(Least Significant Bites)最不重要位,最低有效位。 MSB(Most Significant Bites)最高重要位,最高有效位。 实验1.1 将图像各个分量的LSB清0,如下: >> data = imread('lenna.jpg'); >> data1 = bitand(data,254);%bin2dec >> subplot(2,2,3)imshow(data1); 将图像各个分量的MSB清0,如下: >> data2 = bitand(data,127); >> subplot(2,2,4)imshow(data2); 原图: >> subplot(2,2,1)imshow(data);
2016年1月16日11时1分
随机选取图像载体像素
随机选取像素点导致图像各部分统计特征不一致。 为了解决这一问题,可以随机间隔选取像素序列。 与顺序嵌入相比,需要设计随机取点的算法。 实验1.3 设计随机取点的算法 随机选取像素点嵌入秘密信息 提取秘密信息 画出随机位置
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学号:姓名:专业年级班级:实验室:组别:实验日期:课程名称保密技术实验实验课时实验项目名称和序号1.LSB图像信息隐藏实验同组者姓名实验目的1. 掌握对图像的基本操作。

2. 能够用LSB 算法对图像进行信息隐藏3. 能够用LSB 提取算法提取隐藏进图像的信息4. 能够反映jpeg 压缩率与误码率之间的关系实验环境Windows+matlab实验内容和原理1.用MA TLAB 函数实现LSB 信息隐藏和提取2.分析了LSB 算法的抗攻击能力3.能随机选择嵌入位(考虑安全性因素)实验步骤方法关键代码实验算法1:LSB 嵌入1.读取一副256*256 大小的图片,判断是否为RGB 图像。

若为RGB 图像,则读取图像的一层信息(如R 层)。

通过读取图像的尺寸大小来判断是否为RGB图像。

RGB图像是三维多彩图,size有3个参数,最小参数是3,只要判断读取到的图像大小大于2,就确定读入的是RBG 图像2.以二进制形式读取要嵌入到图片里的消息。

并读取消息的长度(嵌入消息的长度不能超过图像位数)。

3.产生与消息长度一致的一串随机数(不能相同)。

自定义一个randinterval函数来实现伪随机数的生成产生的伪随机数是代表消息要隐藏的像素位置(行和列的信息)随机数代码:function [row,col]=randinterval(matrix,count,key)%randinterval.m%参数说明%matrix是载体矩阵,即要隐藏信息的图层%cout为要嵌入信息的像素数量%key为自定义秘钥,随机种子[m,n] = size(matrix);interval1 = floor(m * n/(count+eps)) + 1;interval2 = interval1 - 2;if interval2 == 0error('载体太小不能把秘密信息隐藏进去');endrand('seed',key);a = rand(1, count);row = zeros([1 count]);col = zeros([1 count]);r = 1;c = 1;row(1,1) = r;col(1,1) = c;for i =2:countif a(i) >= 0.5c = c + interval1;elsec = c + interval2;endif c > nr = r + 1;if r > merror('载体太小不能把秘密信息隐藏进去');endc = mod(c, n);if c == 0c = 1;endendrow(1, i) = r;col(1, i) = c;end4.按照产生的随机数的序列依次将图片层的最后一位改为消息的信息。

即用消息替换图片的最后一位信息。

5.嵌入完成后,如果为RGB 则将该层返回原图像。

然后将数据信息写回图像。

LSB就完成了。

image=imread('1.jpg');Hide_image=image;Hide_image=double(Hide_image);mysize=size(image);if numel(mysize)>2['the photo is a rgb style photo'] %是rgb图像输出到命令行窗口image1=Hide_image(:,:,1); %第三个参数 1代表的读取的是红层,但是没有将2,3层设为0,因为会叠加,所以显示出来的第一层图像还是灰色的message=fopen('Message.txt','r');[msg,msg_len]=fread(message,'ubit1') %按位以二进制形式读取文本内容与长度[m,n]=size(image1) %读取行和列p=1; %p为秘密信息的位计数器[row,col]=randinterval(image1,msg_len,1996);for i=1:msg_lenimage1(row(i),col(i))=image1(row(i),col(i))-mod(image1(row(i),co l(i)),2)+msg(p,1);if p==msg_lenbreak;end ;p=p+1;end%还原图像Hide_image(:,:,1)=image1;Hide_image=uint8(Hide_image);imwrite(Hide_image,'Hide_image.tif');%输出隐藏信息的图像subplot(121);imshow(image);title('未嵌入信息的图片');subplot(122);imshow(Hide_image);title('嵌入信息的图片');else ['the photo is not a rgb style']fclose('all');end实验算法2:读取LSB 隐藏的信息1.读取已经隐藏信息的图像。

如果为RGB 图像,则读取图像的一层(该层为嵌入信息的那层)。

2.用与LSB 算法中相同的随机数种子产生相同的一串随机数。

随机数串的长度由LSB 中获得(长度不得大于图像大小)。

用同一个伪随机生成算法,相同的种子,来产生像素点位置,可以确保隐藏时和提取时位置顺序是一模一样的,在顺序读取这些位置上的数据(利用与运算,与上1,任何数与上1还是本身的性质),就是隐藏的信息。

3.按照产生的随机数序列依次读取图像的相应点最后一位的信息。

并将其以二进制形式写到文件中。

Ubit1就代表每次读取1位,写入文件,每8位识别一个ASCII码值。

所以可以成功写入26个字母和数字。

其他字符由于文本文档识别不了,所以写入文本之后都变成了乱码。

4.看文件,即获取的信息,与嵌入的信息进行比较。

Message.txt是原始信息文档,txt是提取出来的信息文档,可以发现二者信息内容是一模一样的,说明隐藏信息提取是成功的。

%功能:用来提取隐藏信息Picture=imread(‘Hide_image.tif’);Picture=double(Picture);[m,n]=size(Picture);if msg_len>m*nerror('嵌入信息量过大,请重新选择图像')endfrr=fopen(‘3.txt’,’w’); %以写入方式打开只写文件msg_len=8; %这里要改成实验一中自己图片的数据p=1;[row,col]=randinterval(Picture,msg_len,1996);for i=1:msg_lenif bitand(Picture_R(row(i),col(i)),1)==1 %按位与运算fwrite(frr,1,’ubit1’);result(p,1)=1;elsefwrite(frr,0,’ubit1’);result(p,1)=0;endif p==msg_lenbreak;endp=p+1;endfclose(frr);%fwrite函数的作用是将内存中的二进制数据原样写入文件中%是ubit后面的数字表示是一次读几位,中间的数据表示读几次。

1.读取已经隐藏信息的图像。

fp=imread(‘Hide_image.tif’);2. 使用imwrite 函数对图像进行压缩,设定压缩比例。

imwrite(fp,’out.jpg’,’quality’,compressibility)Compressiblity是图像的质量因子,可设置在0-100范围内;3. 如果为RGB 图像,则读取嵌有信息的一层。

按照读取LSB 隐藏信息算法的步骤,读取信息,不写入文件。

4. 读取原文件,即隐藏的信息,以二进制读取。

并取得消息长度。

message=fopen(‘message.txt’,’r’);[ms g,msg_len]=fread(message,’ubit1’)%按位以二进制形式读取文本内容与长度5比较取得的信息和原信息的每一位,记录不相等位数的个数。

bit_error=find(result~=msg); %寻找不相等的位置bit_error_count=size(bit_error,1); %统计不相等的个数6.用不相等个数除以总长度即可得到误码率。

ber(compressibility/10)=bit_error_count/msg_len;7.改变压缩率。

得到一组误码率关于压缩率的函数。

在开始时,设置9次循环,压缩图片的质量因子compressibility从10开始增加,每次递增10,直到compressibility=100,记录下每次的误码率,用plot函数做出关于以质量因子为横坐标,误码率为纵坐标的图表。

for compressibility=10:10:100 %九次不同压缩率的图片压缩fp=imread(‘Hide_image.tif’);imwrite(fp,’out.jpg’,’quality’,compressibility)% plot参数说明:% 参数1是横坐标自变量,参数2是纵坐标自变量,参数3是指用说明形式描点,参数4和5代表把散点链接起来compressibility=10:10:100;plot(compressibility,ber,’*’,compressibility,ber);title(‘基于图片压缩质量因子的误码率图表’);代码:close all;clcfor compressibility=10:10:100fp=imread('Hide_image.tif');imwrite(fp,'out.jpg','quality',compressibility);out=imread('out.jpg');out=double(out);if size(fp)>2outr=out(:,:,1)[m,n]=size(outr)msg_len=8p=1;%将消息序列写回文本文件[row,col]=randinterval(outr,msg_len,1996);for i=1 :msg_lenif bitand(outr(row(i),col(i)),1)==1result(p,1)=1;elseresult(p,1)=0;endif p ==msg_lenbreak;endp=p+1;endmessage=fopen('Message.txt','w');[msg,msg_len]=fread(message,'ubit1');bit_error=find(result~=msg_len)bit_error_count=size(bit_error,1);ber(compressibility/10)=bit_error_count/(msg_len+eps); endendcompressibility=10:10:100;plot(compressibility,ber,'*',compressibility,ber);title('基于图片压缩质量因子的误码率图表 ');(接上页)实验步骤方法关键代码测试记录如果找到的图片的msg_len太小,那么后面输入的数字位数就会很短,否则就会乱码。

相关文档
最新文档