LSB图像信息隐藏实验
- 格式:doc
- 大小:250.00 KB
- 文档页数:9
实验三:LSB图像信息隐藏一、实验目的了解信息隐藏中最常用的LSB算法的特点,掌握LSB算法原理,设计并实现一种基于图像的LSB隐藏算法;了解如何通过峰值信噪比来对图像进行客观评价,并计算峰值信噪比值。
二、实验环境(1)Windows 7操作系统;(2)MATLAB R2012b版本软件;(3)BMP格式灰度图像文件。
三、原理简介任何多媒体信息在数字化时都会产生物理随机噪声,而人的感官系统对这些随机噪声并不敏感。
替换技术就是利用这个原理,通过使用秘密信息比特替换随机噪声,从而实现信息隐藏目的。
在BMP灰度图像的位平面中,每个像素值为8比特二进制,表示该点亮度。
图像高位平面对图像感官质量起主要作用,去除图像最低几个位平面并不会造成画面质量的明显下降。
利用这个原理可用秘密信息(或称水印信息)替代载体图像低位平面以实现信息嵌入。
本算法选用最低位平面来嵌入秘密信息。
最低位平面对图像的视觉效果影响最轻微,但很容易受噪声影响和攻击,可采用冗余嵌入的方式来增强稳健性加以解决,即在一个区域(多个像素)中嵌入相同的信息,提取时根据该区域中的所有像素判断。
四、实验步骤1. 隐藏提取及测试算法分为三个部分实现:(1)隐藏算法;(2)提取算法;(3)测试脚本。
1)隐藏算法源代码hide_lis.m如下:function o = hide_lsb(block,data,I)%function o = hide_lsb(block,data,I)%隐藏提取及测试%block:隐藏的最小分块大小%data:秘密信息%I:原始载体si = size(I);lend = length(data);N = floor(si(2)/block(2));%将图像划分为M*N个小块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);endend2)提取算法源代码dh_lsb.m如下:function out = dh_lsb(block,I)%function out = dh_lsb(block,I)%源代码dh_lsb.m如下:%block:隐藏的最小分块大小%I:携密载体si = size(I);%将图像划分为M*N个小块N = floor(si(2)/block(2));M = floor(si(1)/block(2));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;endendend3)测试脚本源代码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;endsi = 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];endI = 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);2. 计算峰值信噪比(1)峰值信噪比定义:2,2,,,,max ()x y x y x y x yx y p PSNR XY p p =-∑(2)峰值信噪比函数。
上海电力学院高级程序设计(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代码。
基于LSB算法的图像信息隐藏与检测数字图像隐写分析基于LSB算法的图像信息隐藏与检测学院名称计算机科学与技术学院专业班级学⽣姓名学号指导教师2016.05.01基于LSB算法的图像信息隐藏与检测摘要:LSB替换隐写基本思想是⽤嵌⼊的秘密信息取代载体图像的最低⽐特位,原来的的7个⾼位平⾯与替代秘密信息的最低位平⾯组合成含隐藏信息的新图形。
⽂章⾸先简单叙述了BMP位图⽂件的⽂件格式,然后根据24位真彩⾊BMP位图格式与显⽰⽅式的特殊性,直接改变图像中像素的最后⼀位值来嵌⼊秘密⽂件,提出了⼀种对⽂字信息进⾏加密的有效⽅案。
关键词:LSB,信息隐藏,信息安全,BMP位图Image information hiding and detection based on LSBalgorithmAbstract: LSB replacement steganography basic idea is to use the embedded secret information to replace the image of the lowest bits, the original 7 high plane and the least significant bit plane of alternative secret information into new graphics containing hidden information.This paper simple describes the BMP file format of the bitmap file, and then according to the 24 true color BMP bitmap format and the particularity of display mode, directly change the values of pixels in the image of the last to embed secret files, puts forward a effective scheme of text information is encrypted.Key words: LSB, Information hiding,information security,bit map file⽬录第1章绪论 (5)1.1 LSB算法原理 (5)第2章 LSB隐写实现 (7)2.1 LSB隐藏过程 (7)2.2 LSB隐写实例效果 (8)第3章 LSB信息提取 (10)3.1 LSB信息提取过程 (10)3.2 LSB信息提取实例效果 (10)参考⽂献 (13)第1章绪论1.1 LSB算法原理LSB是L.F.Turner和R.G.van Schyndel等⼈提出的⼀种典型的空间域信息隐藏算法。
信息隐藏实验报告一实验名称:图像的位平面,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隐写分析姓名:周伟康学号:班级:一:实验要求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的图像信息隐藏)最近在上信息隐藏,做⼀个记录⼀,实验要求(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")。
学号:姓名:专业年级班级:实验室:组别:实验日期:课程名称保密技术实验实验课时实验项目名称和序号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图像信息隐藏实验【实验环境】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, 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。
上机实验报告一、实验目的: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,先后运行程序。
学号:姓名:专业年级班级:
实验室:组别:实验日期:
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_len
image1(row(i),col(i))=image1(row(i),col(i))-mod(image1(row(i),col(i)),2)+msg(
p,1);
if p==msg_len
break ;
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.读取已经隐藏信息的图像。
fp=imre ad(‘Hide_image.tif’);
2. 使用 imwrite 函数对图像进行压缩,设定压缩比例。
imwrite(fp,’out.jpg’,’quality’,compressibility)
Compressiblity是图像的质量因子,可设置在0-100范围内;
3. 如果为 RGB 图像,则读取嵌有信息的一层。
按照读取 LSB 隐藏信息算法的步骤,读取信息,不写入文件。
4. 读取原文件,即隐藏的信息,以二进制读取。
并取得消息长度。
message=fopen(‘message.txt’,’r’);
[msg,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)
(接上页)
实验步骤
方法
关键代码
测试记录
分析
如果找到的图片的msg_len太小,那么后面输入的数字位数就会很短,否则就会乱码。
结论
小结
经过这次实验操作,让我对matlab有了更深的理解。
对信息隐藏也有了更深得认识。
以下由实验教师填写
(注:文档可能无法思考全面,请浏览后下载,供参考。
可复制、编制,期待你的好评与关注!)。