步骤1:启动MATLAB并设置工作目录。
打开操作机桌面上的MATLAB R2014a软件。在软件窗口上方的地址栏中输入实验目录路径 D:\11、信息安全\4、信息内容安全\23信息隐藏课程\13.调色板图像隐写实验\hongya,点击搜索按钮。确保“当前文件夹”窗口中列出了实验所需的所有文件,包括 lenaindex.bmp、hidden.txt 以及相关的 .m 脚本文件。
步骤2:运行信息嵌入脚本。
在当前文件夹中双击打开 simpleindexhiding.m 文件。该脚本首先读取载体图像 lenaindex.bmp 获取索引矩阵 x 和调色板 map。接着读取 hidden.txt 中的秘密信息,并将其转换为二进制位流。脚本通过循环计算原始调色板的有效长度 oplength,然后复制调色板并将复制部分的蓝色分量增加 0.0001,构建扩展调色板 wmap。设定随机种子密钥 key=1234,调用 randselect 函数根据消息长度随机选取隐藏位置。最后遍历消息位,若位为 1,则将对应像素的索引值修改为原索引加 oplength。处理完成后,使用 imwrite 函数将携密图像保存为 lenaindex1.bmp。
步骤3:验证携密图像生成效果。
点击脚本运行按钮,观察弹出的Figure窗口。窗口左侧显示原始图像,右侧显示生成的携密图像 lenaindex1.bmp。通过对比两张图像,确认视觉上没有明显差异,验证了隐写算法的隐蔽性。同时检查MATLAB当前文件夹,确认已成功生成 lenaindex1.bmp 文件。
步骤4:运行信息提取脚本。
双击打开 simpleextract.m 文件。脚本首先读取生成的携密图像 lenaindex1.bmp。为了正确提取信息,需设置与嵌入时一致的参数:密钥 key=1234,需要提取的比特数 count=24(对应3个字符),以及原始调色板的长度 oplength=64。再次调用 randselect 函数生成相同的随机位置序列。脚本遍历这些位置的像素索引值,若索引值大于 64,则判定该位隐藏信息为 1,否则为 0。提取出的二进制序列经 bit2str 转换为字符串后,写入新建的 message.txt 文件中。
步骤5:验证提取结果。
运行提取脚本后,在当前文件夹中查看是否生成了 message.txt 文件。双击打开该文本文件,检查其内容是否为预期的秘密信息“147”。若显示内容正确,说明实验成功完成了信息的嵌入与提取全过程。
实验结果
本实验成功利用MATLAB实现了基于调色板扩展的图像信息隐写。通过将秘密信息“147”嵌入到载体图像 lenaindex.bmp 中,生成了肉眼无法分辨差异的携密图像 lenaindex1.bmp。在提取阶段,利用正确的密钥和参数,成功从携密图像中还原出 message.txt 文件,其内容准确无误地显示为“147”,验证了隐写算法的正确性和鲁棒性。
个人收获 通过本次实验,我深入理解了调色板图像隐写的技术原理,特别是如何利用人眼对蓝色分量不敏感的特性来扩展调色板以隐藏数据。我掌握了MATLAB在图像矩阵操作、文件读写及调色板修改方面的编程技巧。同时,我也认识到密钥同步、随机位置选择以及原始调色板长度等参数在信息提取中的关键作用,这为今后学习更复杂的信息安全算法打下了坚实基础。
本文作者:Linxiong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!