LSB图片信息隐藏隐藏实验
基于LSB算法的图像信息隐藏与检测
基于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隐写,随机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的图像信息隐藏)最近在上信息隐藏,做⼀个记录⼀,实验要求(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图像信息隐藏实验【实验环境】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 隐写的分析方法,设计并实现一种基于图像的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.实验⽬的(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图像信息隐藏原理
上机实验报告一、实验目的: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图片信息隐藏隐藏实验
上海电力学院高级程序设计(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 图像信息隐藏
实验要求: 算法分两部分: ① 水印嵌入算法; ② 判断图像是否篡改的算法。
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图像信息隐藏课程设计一、课程目标知识目标:1. 学生能理解图像信息隐藏的基本概念,掌握LSB(最低有效位)算法的原理和应用。
2. 学生能描述LSB算法在图像处理和信息安全领域的实际应用场景。
3. 学生能解释LSB算法中涉及的颜色空间转换、图像编码和解码过程。
技能目标:1. 学生能运用LSB算法实现简单的图像信息隐藏,具备基本的图像处理技能。
2. 学生能运用编程工具(如Python等)实现LSB算法,提高实际操作能力。
3. 学生能通过案例分析和实践,学会运用LSB算法解决实际问题。
情感态度价值观目标:1. 学生对图像信息隐藏产生兴趣,提高对信息安全的认识和重视。
2. 学生通过小组合作完成任务,培养团队协作和沟通能力。
3. 学生在学习过程中,培养积极探索、勇于创新的精神。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术课程,旨在让学生了解图像信息隐藏的基本原理和方法,提高信息安全意识。
2. 学生特点:学生为初中生,对新鲜事物充满好奇,具备一定的编程基础和图像处理知识。
3. 教学要求:注重理论与实践相结合,以学生为主体,充分调动学生的积极性,培养实际操作能力和创新精神。
二、教学内容1. 图像信息隐藏概述:介绍图像信息隐藏的基本概念、分类和应用场景,使学生了解LSB算法在图像信息隐藏中的地位和作用。
- 教材章节:第3章 图像信息隐藏技术- 内容:3.1 节 图像信息隐藏的概念及分类;3.2 节 LSB算法简介2. LSB算法原理:讲解LSB算法的基本原理,包括颜色空间转换、图像编码和解码过程。
- 教材章节:第3章 图像信息隐藏技术- 内容:3.3 节 LSB算法原理;3.4 节 颜色空间转换3. LSB算法实现与应用:分析LSB算法在实际应用中的优势和局限,并通过案例讲解其实现过程。
- 教材章节:第3章 图像信息隐藏技术- 内容:3.5 节 LSB算法实现与应用;3.6 节 LSB算法的优势与局限4. 实践操作:安排学生进行LSB算法的实践操作,包括使用编程工具实现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图像信息隐藏实验
学号:姓名: 专业年级班级:message=fope n( 'Message.txt' ,'广);[msg,msg」en ]=fread(message, 'ubitl' ) %按位以二进制形式读取文本内容与长度[m, n]=size(image1) %读取行和列p=1; %卩为秘密信息的位计数器[row,col]=ra ndi nterval(image1,msg_le n,1996);for i=1:msg_le nimage1(row(i),col(i))=image1(row(i),col(i))-mod(image1(row(i),col(i)),2)+msg(p,1);if p==msg_le nbreak ;end ;p=p+1;end%还原图像Hide_image(:,:,1)=image1;Hide_image=ui nt8(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• flfl*** 1T«in Mti WHVI4>||| Xlvn tliM •Gx□鶯*~■CB+ X' 1 □百'rht phcid is ■$E,71e P M EC"■ft实验算法2 :读取LSB隐藏的信息1•读取已经隐藏信息的图像。
如果为RGB图像,则读取图像的一层(该层为嵌入信息的那层)。
2. 用与LSB算法中相同的随机数种子产生相同的一串随机数。
LSB信息隐藏实验
实验一:LSB信息隐藏实验【实验目的】:一、掌握MATLAB基本操作二、实现LSB信息隐藏和提取【实验内容】:(请将你实验完成的项目涂“■”)实验完成形式:■ 用MATLAB函数实现LSB信息隐藏和提取□ 用MATLAB命令行方式实现LSB信息隐藏和提取□ 其它:(请注明)实验选择载体:□ 256×256灰度图像 □ 256×256RGB图像 ■ 任意大小的RGB图像实验效果和分析:■ 分析了LSB算法的抗攻击能力■ 能随机选择嵌入位(考虑安全性因素)■ 嵌入位均匀分布于载体■ 信息提取的检错/纠错■ LSB隐写分析□ 其它:(请注明)【实验工具及平台】:■ Windows+Matlab □ 其它:(请注明)【实验涉及到的相关算法】:1、与实验内容选择的项目对应;2、请使用流程图、伪代码、NS图或文字方式描述,不要..贴代码1.海明码选择得是(7,4)海明码,它可以纠正一位错误,编码和解码分别用两个函数实现,关于它的算法,这里就不赘述了。
2.为了能随机选择嵌入位,我选择了Md5函数来选择嵌入位。
选择嵌入位的时候有3个密钥参与,提高了安全性,而且使嵌入位均匀分布于载体。
3.Lsb的嵌入方法是先将要隐藏的信息以二进制的形式读入,再随机选择它们要嵌入的位置。
如果要隐藏的信息的某一位为1,则它要嵌入的载体图象相应位置的像素值mod2的值为1;如果要隐藏的信息的某一位为0,则它要嵌入的载体图象相应位置的像素值mod2的值为0。
Lsb的提取方法是先将确定隐藏信息嵌入的位置。
如果该位置的像素值mod2的值为1;则此处隐藏的信息的1,如果该位置的像素值mod2的值为0;则此处隐藏的信息的0。
下面是整个算法的流程图:提取流程图【实验分析】:1、 请尽量使用曲线图、表等反映你的实验数据及性能2、 对照实验数据从理论上解释原因3、 如无明显必要,请.不要..大量粘贴....实验效果图 1.Lsb 的抗攻击能力比较差,下图是JPEG 压缩率与隐藏信息误码率的关系曲线:由上图可以看出,当存在轻微的jpeg 压缩,lsb 的误码率就达到了50%,这就很不理想了。
信息隐藏基础实验
实验一基于图像的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信息隐藏的RS分析
LSB 信息隐藏的RS 分析一,实验目的:了解RS 隐写分析的原理,掌握一种图像LSB 隐写算法的分析方法,设计并实现一种基于图像的LSB 隐写的RS 隐写分析算法。
二,实验环境(1)Windows 7操作系统; (2)MATLAB R2012b 版本软件; (3)图像文件lena.bmp ; (4)S-Tools 工具; 三,实验原理1. RS 隐写分析原理RS 主要是针对采用伪随机LSB 嵌入算法进行攻击的一种方法。
RS 方法不但能检测出图像是否隐藏信息,而且还能比较准确地估算出隐藏的信息长度。
RS 隐写分析算法考虑图像各个位平面之间具有一定的非线性相关性,当利用LSB 隐写算法隐藏秘密信息后,这种相关性就会破坏。
只要能找出衡量这一相关性的方法,并对隐藏秘密信息前后的情况加以对比,就有可能设计出隐写分析方法。
RS 隐写分析方法的理论核心是:任何经过LSB 隐写的图像,其最低比特位分布满足随机性,即0、1的取值概率均为1/2,而未经过隐写的图像不存在此特性。
对于一个M N ⨯像素的图片,设各个像素的值取自集合P ,例如一个8bit 的灰度图像,{0,1,2,,255}P =L 。
将这些像素分为有着n 个相邻像素的子集,例如n 可以取值为4,记为1234(,,,)G x x x x =。
进一步利用如下函数表示图像块的空间相关性,即112311(,,,,)n n i ii f x x x x x x -+==-∑L (1)函数f 使得每一个集合G 都对应一个实数。
G 中的噪声越大,函数f 的值越大。
f 的值越小,说明图像相邻像素之间的起伏越小,而图像块的空间相关性越强。
然后,定义集合P 上的3个函数:(1)交换函数1F :221,01,23,,254255n n ↔+↔↔↔L 。
(2)偏移函数1F -:221,10,12,,255256n n ↔--↔↔↔L 。
(3)恒等变换0F :0(),F x x x P =∈。
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卡方隐写分析方法。
二,实验环境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信息隐藏实验报告
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图像信息隐藏课程设计一、教学目标本课程旨在通过学习LSB图像信息隐藏技术,使学生掌握数字图像处理的基本原理,了解LSB隐写技术的实现方法,培养学生运用信息隐藏技术进行图像信息安全的能力。
具体目标如下:1.知识目标:(1)了解数字图像的基本概念,包括图像的表示、图像文件格式等。
(2)掌握LSB隐写技术的基本原理,了解其在本课程中的应用。
(3)熟悉图像加密和信息隐藏的基本方法,了解当前研究热点和发展趋势。
2.技能目标:(1)能够运用LSB隐写技术对图像进行信息隐藏。
(2)能够使用相关工具和软件进行图像处理和信息提取。
(3)具备分析图像信息隐藏效果的能力,能够针对不同场景提出优化策略。
3.情感态度价值观目标:(1)培养学生对图像信息安全的重视,提高信息安全意识。
(2)培养学生勇于探索、创新的精神,激发对信息技术领域的兴趣。
二、教学内容本课程的教学内容主要包括以下几个部分:1.数字图像基础:包括图像的表示、图像文件格式、图像处理基本概念等。
2.LSB隐写技术:介绍LSB隐写技术的原理、实现方法及其在图像信息隐藏中的应用。
3.图像加密与隐藏方法:介绍常见的图像加密和信息隐藏方法,包括对称加密、非对称加密、混沌加密等。
4.图像信息隐藏工具与技术:介绍当前常用的图像信息隐藏工具,如StegTool、Invisible Secrets等,以及如何使用这些工具进行图像信息隐藏和提取。
5.图像信息隐藏效果分析与优化:分析图像信息隐藏的效果,针对不同场景提出优化策略。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:教师讲解图像信息安全的基本概念、原理和方法。
2.案例分析法:分析实际案例,使学生更好地理解图像信息隐藏技术的应用。
3.实验法:让学生动手实践,使用相关工具和软件进行图像信息隐藏和提取。
4.讨论法:学生进行小组讨论,分享学习心得和经验,互相促进。
四、教学资源为实现课程目标,我们将使用以下教学资源:1.教材:《数字图像处理》、《信息安全原理与实践》等。
信息隐藏实验(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),评估隐写对图像质量的影响。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院高级程序设计(C)课程设计报告LSB信息隐藏实验题目:院系:计算机科学与技术学院专业年级:信息安全2012级学生姓名:涂桂花学号:20123333指导教师:魏为民2015年4月14日目录一、实验目的 (1)二、实验内容和步骤 (1)1. 操作环境 (1)2. 系统配置 (1)3. 操作步骤 (1)4. 程序源代码 (5)三、实验结果 (5)1. 测试图片 (5)2. 测试结果 (5)3.截屏 (6)四.实验小结 (6)1. 遇到的问题总结合分析: (6)2. 未解决的问题 (10)3. 实验效果和分析 (10)4. 总结: (10)附件: (11)上 海 电 力 学 院实 验 报 告课程名称实验项目姓名 学号 班级 专业同组人姓名 指导教师 魏为民 实验日期一、实验目的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 ”属性设置为下图相应信息安全 LSB 信息隐藏实验 涂桂花 20123333 2012252 信息安全 无 2015.4.14显示的名字,Tag属性设置为pbt+String名的格式。
将4个axec控件的Tag属性设置为如下图所显示的名字。
3)分别右键点击5个push button控件,View Callbacks->CallBacks.给每个控件添加Callback代码。
再添加代码之前要为该fig文件命名。
我在本次实验命名为LSB3333.fig。
各个控件的代码如下:% --- Executes on button press in pbtCover.function pbtCover_Callback(hObject, eventdata, handles)% hObject handle to pbtCover (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global gCover;[gCover,sFile]=loadimg();if isempty(gCover)msgbox('Cover image is empty!','Warning','warn','modal');return;endaxes(handles.axCover);imshow(gCover);[iH iW iL]=size(gCover);sMsg=[sFile,'[',num2str(iH),'*',num2str(iW),'*',num2str(iL),']']; set(handles.text1,'String',sMsg);% --- Executes on button press in pbtSecret.function pbtSecret_Callback(hObject, eventdata, handles)% hObject handle to pbtSecret (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global gSecret;[gSecret ,sFile]=loadimg();if isempty(gSecret)msgbox('Secret image is empty!','Warning','warn','modal');return;endaxes(handles.axSecret);imshow(gSecret);[iH iW iL]=size(gSecret);sMsg=[sFile,'[',num2str(iH),'*',num2str(iW),'*',num2str(iL),']']; set(handles.text1,'String',sMsg);set(handles.text2,'String','Secret Image');% --- Executes on button press in pbtEmbed.function pbtEmbed_Callback(hObject, eventdata, handles)% hObject handle to pbtEmbed (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global gCover gSecret gStego;if isempty(gCover)msgbox('Cover image is empty!' , 'Warning' , 'warn' , 'modal' ); return;endif isempty(gSecret)msgbox('gSecret image is empty!' , 'Warning' , 'warn' , 'modal' ); return;end[Hc,Wc,Lc]=size(gCover);[Hs,Ws,Ls]=size(gSecret);if (Hc~=Hs) || (Wc~=Ws) || (Lc~=Ls)disp('Error: Not Match!' );return;endgStego = uint8(bitor(bitand(gCover,254),bitshift(gSecret,-7))); imwrite(gStego, '~emTmp.bmp' );axes(handles.axStego);imshow(gStego,[]);% --- Executes on button press in pbtExtract.function pbtExtract_Callback(hObject, eventdata, handles)% hObject handle to pbtExtract (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global gStego;global gCover gSecret;if isempty(gCover)msgbox('Cover image is empty!' , 'Warning' , 'warn' , 'modal' ); return;endif isempty(gSecret)msgbox('gSecret image is empty!' , 'Warning' , 'warn' , 'modal' ); return;end[Hc,Wc,Lc]=size(gCover);[Hs,Ws,Ls]=size(gSecret);if (Hc~=Hs) || (Wc~=Ws) || (Lc~=Ls)disp('Error: Not Match!' );return;endgStego = uint8(bitor(bitand(gCover,254),bitshift(gSecret,-7))); imwrite(gStego, '~emTmp.bmp' );axes(handles.axStego);imshow(gStego,[]);if isempty(gStego)msgbox('Stego image is empty!' , 'Warning' , 'warn' , 'modal' ); return;endimExtract = uint8(bitand(255,bitshift(gStego,7)));imwrite(imExtract, '~exTmp.bmp' );axes(handles.axExtract);imshow(imExtract);msgbox('Extracted Image: ~exTmp.bmp' , 'Finished' );% --- Executes on button press in pbtExit.function pbtExit_Callback(hObject, eventdata, handles)% hObject handle to pbtExit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)q=questdlg('Are you sure to exit?','figLSB','Yes','No','No');if strcmp(q,'No')return;enddelete ~*.*%delete (handles.figLSB);delete (LSB3333);4)将测试图片或者图片文件夹放在LSB文件夹下。