信息隐藏 实验四 二值图像信息隐藏
- 格式:doc
- 大小:62.50 KB
- 文档页数:7
一、实验背景信息隐藏技术是一种在传输或存储过程中将隐秘信息隐藏在特定载体中,以保证隐秘信息安全性的技术。
随着信息技术的不断发展,信息隐藏技术在军事、通信、网络安全等领域具有广泛的应用前景。
本实验旨在验证信息隐藏算法在文本信息隐藏中的应用效果,并分析不同算法的性能差异。
二、实验目的1. 了解信息隐藏技术的基本原理和常用算法。
2. 比较不同信息隐藏算法在文本信息隐藏中的应用效果。
3. 分析影响信息隐藏算法性能的因素。
三、实验内容本实验选用以下三种信息隐藏算法进行文本信息隐藏:1. 基于双文本段的信息隐藏算法2. 基于矢量字库的文本信息隐藏算法3. 基于宋词生成的大容量构造式信息隐藏算法实验步骤如下:1. 选择合适的文本作为载体,包括原文和待隐藏信息。
2. 分别采用三种算法对载体文本进行信息隐藏。
3. 对隐藏后的文本进行提取,并计算提取成功率。
4. 分析不同算法的性能差异,包括提取成功率、隐蔽性和安全性。
四、实验结果与分析1. 基于双文本段的信息隐藏算法该算法通过在多种隐形式中选择适当的隐藏形式和信息分散存储,大大提高信息隐藏的隐蔽性、安全性。
实验结果显示,该算法的提取成功率较高,隐蔽性和安全性较好。
2. 基于矢量字库的文本信息隐藏算法该算法利用汉字的二维象形性和人眼视觉冗余特性,通过修改汉字字库的矢量数据来实现信息隐藏。
实验结果显示,该算法的提取成功率较高,隐蔽性和安全性较好,同时具有较大的嵌入空间。
3. 基于宋词生成的大容量构造式信息隐藏算法该算法基于宋词生成模型,通过符号集设计、编码等综合作用,生成宋词诗句来实现信息隐藏。
实验结果显示,该算法的提取成功率较高,隐蔽性和安全性较好,且生成的宋词文本的信息隐藏容量较大。
综合分析三种算法的性能,可以得出以下结论:1. 基于双文本段的信息隐藏算法和基于矢量字库的文本信息隐藏算法在提取成功率、隐蔽性和安全性方面表现较好。
2. 基于宋词生成的大容量构造式信息隐藏算法在信息隐藏容量方面具有优势。
信息隐藏实验报告【篇一:合肥工业大学信息隐藏实验报告完整代码版】计算机与信息学院专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点20~20学年第学期实验1 bmp位图信息隐藏一、实验目的学习bmp格式文件,并编程实现对位图文件信息隐藏二、实验要求将txt文件嵌入bmp 文件中三、问题描述1、bmp位图文件的格式?2、有哪几种方法隐藏信息,分别采用什么样的数据结构3、随机选取如何避免“碰撞”的出现四、算法思想1、bmp位图文件格式0000h~0001h 2字节 -------------------------bm的asc码0002h~0005h 4字节 -------------------------文件大小102718字节0006h~0009h 4字节 -------------------------全为0000ah~000dh 4字节 -------------------------偏移量 118字节000eh~0011h 4字节 -------------------------位图信息块大小40字节 0012h~0015h 4字节 -------------------------宽 4500016h~0019h 4字节 -------------------------高 450001ah~001bh 2字节 -------------------------恒为01h 00h001ch~001dh 2字节 -------------------------颜色所占二进制位数值04h 00h=4 16色位图001eh~0021h 4字节 -------------------------压缩方式=0无压缩0022h~0025h 4字节 -------------------------图像数据区大小 102600字节0026h~0029h 4字节 -------------------------水平每米多少像素 39个 002ah~002dh 4字节 -------------------------垂直每米多少像素 39个 002eh~0031h 4字节 -------------------------图像所用颜色数=00032h~0035h 4字节 -------------------------重要颜色数=00036h~0076h 64字节 -------------------------颜色表0077h~1913dh 102600字节 -------------------------图像数据区2、(1)、在图片图像数据区的一个连续的数据区采用整字节替换的方法(2)、在图像数据的最后增加文本信息的字节(3)、顺序选取每个文本信息字节的每一位替换图像数据区的一个连续的数据区每个字节的最后一位。
实验目的隐写分析以及变换域隐写技术实验内容针对LSB隐写的卡方分析a)实现针对LSB隐写的卡方分析b)分析实验性能针对LSB隐写的RS分析a)实现针对LSB隐写的RS分析b)分析实验性能JPEG压缩算法a)分析JPEG压缩算法的主要流程Jsteg隐写算法a)实现Jsteg隐写算法b)分析实验性能F3隐写算法a)实现F3隐写算法b)分析实验性能实验工具及平台■Windows+Matlab□其它:(请注明)实验涉及到的相关算法1、与实验内容选择的项目对应;2、请使用流程图、伪代码、NS 图或文字方式描述,不要..贴代码 卡方隐写分析卡方隐写分析主要利用了LSB 隐写后图像的值对效应。
它需要LSB 隐写满足如下的条件:1. 嵌入信息中0、1的分布较为均匀,即各为50%左右。
由于信息嵌入到载体之前通常需要经过加密操作,因此这一点是容易满足的。
2. 图像需要有较多的像素点被嵌入信息。
当嵌入信息较少时,卡方分析的效果并不精确。
卡方分析的原理是:若设ℎj 表示图像载体中灰度值为j 的像素数量,如果载体图像没有使用LSB 隐写算法,那么ℎ2i 和ℎ2i+1的值通常相差较大,而LSB 隐写方法将秘密信息取代图像的最低位,由于秘密信息通常是加密过的,因此可以看成0、1分布均匀的比特流。
在嵌入过程中只存在2i →2i +1而不存在2i →2i −1的变换,因此使得ℎ2i 和ℎ2i+1的值趋于一致,我们能够借助改变的统计特性判断图像是否经过隐写。
我们首先定义ℎ2i ∗=ℎ2i +ℎ2i+12,由LSB 隐写算法的性质我们可以知道在嵌入前后该值是不变的。
由中心极限定理,我们有ℎ2i −ℎ2i+1√(2ℎ2i ∗)→N(0,1) 因此r = ∑(ℎ2i −ℎ2i ∗)2ℎ2i ∗k i=1服从卡方分布。
结合卡方分布的密度计算函数我们可以计算出载体被隐写的可能性为:p =1−12k−12T(k −12)∫exp (−t 2)t k−12−1dt r0 当p 的值接近于1时,我们可以推断出载体图像中含有秘密信息。
信息隐藏(图像处理)实验报告
实验一、图像输入与输出
实验目的:
学习在MATLAB环境下对图像文件的I/O操作。
实验要求:
1.在Matlab环境下读入一幅.jpg格式的灰度图像并显示该图像;
2.显示多幅图像。
读入四幅灰度图像,并用两排显示。
实验结果:
实验二、直方图处理 实验目的:
获取图像的直方图,并利用直方图均衡化进行图像增强。
实验要求:
1.在Matlab 环境下读入.jpg 格式的灰度图像,分别显示该图像的直方图以及归一化直方图;
2.进行直方图均衡化。
显示均衡化后的图像,以及该图像的直方图。
实验结果:
原图 直方图
归一化直方图直方图均衡化后的结果图像
直方图均衡化后的结果图像的直方图
实验三、使用DCT进行变换编码
实验目的:
了解图像压缩中常用的DCT变换。
实验要求:
1.在Matlab环境下显示4x4的DCT基函数图像;
2.读入.jpg格式的灰度图像,对该图像进行8x8的DCT变换,将得到的系数的50%截去,再对截去的系数阵列进行逆变换得到重构图像,以图像形式显示重构图像和原始图像的误差。
实验结果
原图 4x4的DCT基函数图像
重构图像重构误差图像
实验四、图像加密
实验目的:
了解基于置乱的图像加密方法。
实验要求:
1.读入.bmp格式的灰度图像,编程实现基于Arnold变换的图像置乱加密算法。
实验结果:
原图置乱1次
置乱2次置乱3次
置乱4次置乱5次
置乱6次置乱96次。
第1篇一、实验目的1. 了解信息隐藏技术的基本原理和实现方法。
2. 掌握信息隐藏技术在图像、音频和视频等数字媒体中的应用。
3. 通过实验验证信息隐藏技术的有效性和安全性。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 库:OpenCV、scikit-image、numpy、matplotlib三、实验内容1. 图像信息隐藏2. 音频信息隐藏3. 视频信息隐藏四、实验步骤1. 图像信息隐藏(1)选择一幅图像作为宿主图像,并选择一幅图像作为水印图像。
(2)将水印图像转换为二值图像。
(3)对宿主图像进行分块处理,将每个块转换为二值图像。
(4)根据密钥对水印图像进行置乱,提高安全性。
(5)将置乱后的水印图像嵌入到宿主图像的对应块中。
(6)提取水印图像,并与原始水印图像进行对比。
2. 音频信息隐藏(1)选择一段音频作为宿主音频,并选择一段音频作为水印音频。
(2)对宿主音频和水印音频进行分帧处理。
(3)根据密钥对水印音频进行置乱,提高安全性。
(4)将置乱后的水印音频嵌入到宿主音频的对应帧中。
(5)提取水印音频,并与原始水印音频进行对比。
3. 视频信息隐藏(1)选择一段视频作为宿主视频,并选择一段视频作为水印视频。
(2)对宿主视频和水印视频进行帧提取。
(3)根据密钥对水印视频进行置乱,提高安全性。
(4)将置乱后的水印视频嵌入到宿主视频的对应帧中。
(5)提取水印视频,并与原始水印视频进行对比。
五、实验结果与分析1. 图像信息隐藏实验结果表明,嵌入水印后的图像与原始图像在视觉效果上几乎没有差异,水印的嵌入效果良好。
同时,提取的水印图像与原始水印图像完全一致,证明了信息隐藏技术的有效性。
2. 音频信息隐藏实验结果表明,嵌入水印后的音频与原始音频在音质上几乎没有差异,水印的嵌入效果良好。
同时,提取的水印音频与原始水印音频完全一致,证明了信息隐藏技术的有效性。
3. 视频信息隐藏实验结果表明,嵌入水印后的视频与原始视频在视觉效果上几乎没有差异,水印的嵌入效果良好。
学号:姓名:专业年级班级:实验室:组别:实验日期:课程名称保密技术实验实验课时实验项目名称和序号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.按照产生的随机数的序列依次将图片层的最后一位改为消息的信息。
一、实验目的1. 了解信息隐藏的基本原理和方法。
2. 掌握数字图像、音频、视频等媒体中信息隐藏的实现技术。
3. 熟悉信息隐藏技术在实际应用中的重要性。
二、实验内容1. 数字图像信息隐藏2. 音频信息隐藏3. 视频信息隐藏三、实验原理信息隐藏是指将秘密信息嵌入到公开信息(如数字图像、音频、视频等)中,使得秘密信息在传输或存储过程中不易被发现。
信息隐藏技术广泛应用于网络安全、数字版权保护、隐私保护等领域。
四、实验步骤1. 数字图像信息隐藏(1)选择一幅数字图像作为公开信息,如图1所示。
(2)选择一幅与公开信息大小相同的数字图像作为载体图像,如图2所示。
(3)在载体图像中嵌入秘密信息,采用空域方法,如图3所示。
(4)提取嵌入的秘密信息,如图4所示。
2. 音频信息隐藏(1)选择一段音频作为公开信息,如图5所示。
(2)选择一段与公开信息时长相同的音频作为载体音频,如图6所示。
(3)在载体音频中嵌入秘密信息,采用时域方法,如图7所示。
(4)提取嵌入的秘密信息,如图8所示。
3. 视频信息隐藏(1)选择一段视频作为公开信息,如图9所示。
(2)选择一段与公开信息时长相同的视频作为载体视频,如图10所示。
(3)在载体视频中嵌入秘密信息,采用空域方法,如图11所示。
(4)提取嵌入的秘密信息,如图12所示。
五、实验结果与分析1. 数字图像信息隐藏实验结果表明,采用空域方法嵌入秘密信息后,嵌入秘密信息的图像与原始图像在视觉效果上基本一致,且提取的秘密信息与原始秘密信息完全相同。
2. 音频信息隐藏实验结果表明,采用时域方法嵌入秘密信息后,嵌入秘密信息的音频与原始音频在听觉效果上基本一致,且提取的秘密信息与原始秘密信息完全相同。
3. 视频信息隐藏实验结果表明,采用空域方法嵌入秘密信息后,嵌入秘密信息的视频与原始视频在视觉效果上基本一致,且提取的秘密信息与原始秘密信息完全相同。
六、实验总结通过本次实验,我们了解了信息隐藏的基本原理和方法,掌握了数字图像、音频、视频等媒体中信息隐藏的实现技术。
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图像信息隐藏课程设计一、课程目标知识目标: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信息隐藏算法一、实验目的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),实现对上述算法不可感知性的客观评价。
实验四二值图像信息隐藏一、实验目的了解二值图像的特点,掌握基于二值图像的信息隐藏原理,读懂两种基于二值图像的信息隐藏方法,并自己设计另一种二值信息隐藏的方法。
二,实验环境(1)Windows XP操作系统;(2)MATLAB 7.2版本软件;(3)二值图像文件。
三、实验原理二值图像又称为单色图像或黑白图像,一般用1或0表示黑色或白色像素点,利用二值图像信息隐藏的方法主要是根据图像中黑白像素数量的比较来隐藏信息。
方法一:把一个二值图像分成一系列矩形图像区域B,某个图像区域B中黑色像素的个数大于一半,则表示嵌入0;如果白色像素的个数大于一半,则表示嵌入1。
但是当需要嵌入的比特与所选区域的黑白像素的比例不一致时,为了达到希望的像素关系,则需要修改一些像素的颜色。
方法二:采用游程编码方法在二值图像中隐藏信息。
秘密信息嵌入时修改二值图像的游程长度,如果秘密信息位是0,则修改该游程长度为偶数;如果为1,则修改游程长度为奇数;如果秘密信息的取值与游程长度的奇偶性相匹配,则不改变游程长度。
方法三:将二值图像分块,使用一个与图像块大小相同的密钥二值图像块,与每一个图像块按像素进行“与”运算,“与”运算的结果可以确定是否在该块中嵌入数据,或嵌入怎样的数据。
四,实验步骤下面以方法三为原理,进行实验。
1.嵌入秘密信息主要思想:首先将载体图像分块,块数为秘密信息的二进制码个数,分块大小为载体图像的长和宽分别除以块数;设定一个与图像块大小相同的密钥二值图像块,具体为一个8×8的数组,其中前4行全为1,后4行全为0;将载体图像块与密钥二值图像块进行“与”运算。
经过运算后,参与统计的像素变为前4行。
接下来统计“有效”像素黑白的个数,某个图像区域B中黑色像素的个数大于“有效”像素一半,则表示嵌入0;如果白色像素的个数大于“有效”像素一半,则表示嵌入1。
但是当需要嵌入的比特与所选区域的黑白像素的比例不一致时,为了达到希望的像素关系,则需要修改一些像素的颜色。
二值图像信息隐藏算法与提取姓名:牛伟豪学号:201115030219班级:通信111502二值图像信息隐藏算法与提取摘要:为了达到较好的隐藏效果,本文采用游程编码的方法在二值图像中隐藏信息。
秘密信息嵌入时修改二值图像的游程长度,如果秘密信息为是0,则修改该游程长度为偶数;如果秘密信息的取值与游程长度的奇偶性相匹配,则不改变游程长度。
提取时根据游程长度奇偶性提取出秘密信息。
在信息隐藏时,改变游程的奇偶性时通过对下一个游程的第一个像素值进行修改,因此当下一个游程长度为1时通过改变当前有成的值实现。
关键词:二值图像,游程编码,信息隐藏Binary image information hiding algorithm Abstract: In order to achieve a better hiding effect, we use run-length coding method to hide information in the binary image. Modify the binary image embedding secret information when the run length, if secret information is 0, then modify the run length is an even number; If the parity value and the run length of the phase-matching secret information, do not change the run length. According to the run length to extract the secret parity information extraction. When information hiding, changing the parity of the run time of the first pixel value of the next run is modified by, so a run length of the current by changing a value of the current successful implementation. Keywords: Binary image, Run-length coding, Information hiding. 1.引言信息隐藏就是把重要的信息秘密的隐藏在公开的载体上。
上海电力学院高级程序设计(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. 总结: (5)附件: (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 201225信息安全无给每个控件添加Callback代码。
再添加代码之前要为该fig文件命名。
我在本次实验命名为LSB3333.fig。
实验四二值图像信息隐藏
一、实验目的
了解二值图像的特点,掌握基于二值图像的信息隐藏原理,读懂两种基于二值图像的信息隐藏方法,并自己设计另一种二值信息隐藏的方法。
二,实验环境
(1)Windows XP操作系统;
(2)MATLAB 7.2版本软件;
(3)二值图像文件。
三、实验原理
二值图像又称为单色图像或黑白图像,一般用1或0表示黑色或白色像素点,利用二值图像信息隐藏的方法主要是根据图像中黑白像素数量的比较来隐藏信息。
方法一:把一个二值图像分成一系列矩形图像区域B,某个图像区域B中黑色像素的个数大于一半,则表示嵌入0;如果白色像素的个数大于一半,则表示嵌入1。
但是当需要嵌入的比特与所选区域的黑白像素的比例不一致时,为了达到希望的像素关系,则需要修改一些像素的颜色。
方法二:采用游程编码方法在二值图像中隐藏信息。
秘密信息嵌入时修改二值图像的游程长度,如果秘密信息位是0,则修改该游程长度为偶数;如果为1,则修改游程长度为奇数;如果秘密信息的取值与游程长度的奇偶性相匹配,则不改变游程长度。
方法三:将二值图像分块,使用一个与图像块大小相同的密钥二值图像块,与每一个图像块按像素进行“与”运算,“与”运算的结果可以确定是否在该块中嵌入数据,或嵌入怎样的数据。
四,实验步骤
下面以方法三为原理,进行实验。
1.嵌入秘密信息
主要思想:首先将载体图像分块,块数为秘密信息的二进制码个数,分块大小为载体图像的长和宽分别除以块数;设定一个与图像块大小相同的密钥二值图
像块,具体为一个8×8的数组,其中前4行全为1,后4行全为0;将载体图像块与密钥二值图像块进行“与”运算。
经过运算后,参与统计的像素变为前4行。
接下来统计“有效”像素黑白的个数,某个图像区域B中黑色像素的个数大于“有效”像素一半,则表示嵌入0;如果白色像素的个数大于“有效”像素一半,则表示嵌入1。
但是当需要嵌入的比特与所选区域的黑白像素的比例不一致时,为了达到希望的像素关系,则需要修改一些像素的颜色。
Matlab代码如下:
msgfid=fopen('hidden.txt','r');%打开秘密文件
[msg,count]=fread(msgfid);
fclose(msgfid);
msg = str2bit(msg);
msg = msg';
count=count*8;
io=imread('hunter.bmp');%读入载体图像
watermarklen=count;%嵌入水印信息长度,也就是载体图像分块的数量值
[row col]=size(io);
l1=floor(row/watermarklen);%载体图像分块后的长度
l2=floor(col/watermarklen);%载体图像分块后的宽度
pixelcount=l1*l2;%每个分块总像素的数量值
miyue=[ones(6,8);zeros(2,8)];%密钥二值图像块
percent=24;
iw=io;
in=io;%存放与运算后的图像信息
%将原图像块与密钥块进行与运算
m=1;
while m<=watermarklen
i=1;
j=1;
in(i:(i+l1-1),j:(j+l2-1))=io(i:(i+l1-1),j:(j+l2-1)) & miyue;
i=i+8;
j=j+8;
m=m+1;
end
inblack(1,watermarklen)=0;%某一个分块中黑色像素的个数
inwhite(1,watermarklen)=0;%某一个分块中白色像素的个数
n=1;
while n<=watermarklen
for i=l1*(n-1)+1:(l1*n-2) %只计算有效前4行的黑白个数
for j=l2*(n-1)+1:l2*n
if in(i,j)==0
inblack(1,n)=inblack(1,n)+1;%计算每个分块中的黑色像素的个数
else
inwhite(1,n)=inwhite(1,n)+1;%计算每个分块中的白色像素的个数
end
end
end
n=n+1;
end
n=1;
while n<=watermarklen
if msg(n,1)==1 %需要嵌入1
if inblack(1,n)>=percent;
%嵌入1的时候,黑色像素比白色像素多,需要修改一些像素的颜色
modcount(1,n)=inblack(1,n)-percent+1;
k=1;
for i=l1*(n-1)+1:(l1*n-2)
for j=l2*(n-1)+1:l2*n
if (iw(i,j)==0&&k<=modcount(1,n))
iw(i,j)=1;k=k+1;
end
end
end
end
else
if inwhite(1,n)>=percent;
%嵌入0的时候,白色像素比黑色像素多,需要修改一些像素的颜色
modcount(1,n)=inwhite(1,n)-percent+1;
k=1;
for i=l1*(n-1)+1:(l1*n-2)
for j=l2*(n-1)+1:l2*n
if (iw(i,j)==1&&k<=modcount(1,n))
iw(i,j)=0;k=k+1;
end
end
end
end
end
n=n+1;
end
n=1;
iwblack(1,watermarklen)=0;%某一个分块中黑色像素的个数
iwwhite(1,watermarklen)=0;%某一个分块中白色像素的个数
while n<=watermarklen
for i=l1*(n-1)+1:l1*n
for j=l2*(n-1)+1:l2*n
if iw(i,j)==0
iwblack(1,n)=iwblack(1,n)+1;%计算每个分块中的黑色像素的个数
else
iwwhite(1,n)=iwwhite(1,n)+1;%计算每个分块中的白色像素的个数
end
end
end
n=n+1;
end
figure;
imshow('hunter.bmp');
imwrite(iw,'huntermarked.bmp');
figure;
imshow('huntermarked.bmp');得到的结果如下图所示:
这是隐藏前后载体图像变化的比较,可以明显的看出图像经过存储秘密信息的处理后图像发生了很大的变化,即出现了一条间断斜线,这是因为在存储秘密信息时,如果图像块中0/1的比例与密文不一致,则需要改动载体图像的像素(常常不止改变一个像素点),所以对载体图像的影响还是比较明显的。
但是这种使用密钥二值图像块的方法比将整个图像块作为对象的方法效果
稍微好一些,因为在分析和修改0/1个数时数量减少了,对载体图像的影响也稍微减轻了一些。
下面是使用密钥二值图像块和不使用密钥二值图像块的目标载体的比较:
2.提取秘密信息
wi=imread('huntermarked.bmp');%读入载体图像
[row col]=size(wi);
watermarklen=80;%嵌入的水印信息的长度
l1=floor(row/watermarklen);%载体图像分块后的长度
l2=floor(col/watermarklen);%载体图像分块后的宽度
pixelblack(1,watermarklen)=0;%某一个分块中黑色像素的个数
pixelwhite(1,watermarklen)=0;%某一个分块中白色像素的个数
n=1;
while n<=watermarklen
for i=l1*(n-1)+1:l1*n
for j=l2*(n-1)+1:l2*n
if wi(i,j)==0
pixelblack(1,n)=pixelblack(1,n)+1;
%计算每个分块中的黑色像素的个数
else
pixelwhite(1,n)=pixelwhite(1,n)+1;
%计算每个分块中的白色像素的个数
end
end
end
n=n+1;
end
n=1;
while n<=watermarklen
if pixelwhite(1,n)>pixelblack(1,n)
%如果白色像素块多于黑色像素块,秘密信息为1 message(n,1)=1
else
message(n,1)=0
%如果黑色像素块多于白色像素块,秘密信息为0 end
n=n+1;
end
%将提取的秘密信息转换成字符串
out=bit2str(message);
fid=fopen('message.txt', 'wt');
fwrite(fid, out)
fclose(fid);
转换为字符串的结果:
五,实验总结
采用游程编码方式隐藏的信息量较大,而且隐写后的载体图像和原始载体图像从视觉上看差别不大,是一种较好的二值图像信息隐藏方法。