基于加密与LSB替换的图像信息隐藏与提取系统
项目介绍
本项目是在 MATLAB 环境下实现的一套数字图像隐写系统,结合了对称加密技术与最低有效位(LSB)替换算法。系统的核心目标是在保证图像视觉质量的同时,通过加密和隐写两层防护手段实现秘密信息的安全传输。用户可以向图像中嵌入经过加密的文本流,并在之后通过逆向过程完整、准确地提取和还原原始信息。
主要功能特性
- 自动载体处理:系统具备自愈性,若当前环境缺失载体图像,会自动生成一张 512x512 的灰度渐变测试图。同时支持将彩色图像自动转换为灰度图像以简化算法复杂度。
- 双层安全防护:
*
第一层(加密层):利用特定密钥控制伪随机数生成器,对秘密信息比特流进行异或(XOR)加密,确保即使隐写位被发现,攻击者也无法直接解析内容。
*
第二层(隐藏层):采用经典 LSB 算法,将加密数据嵌入像素的最低有效位。
- 自描述信息结构:在嵌入秘密数据前,系统动态计算并添加 32 位的长度头信息,使得提取过程无需手动输入字数,实现了自动化提取。
- 质量客观评估:集成 MSE(均方误差)和 PSNR(峰值信噪比)计算模块,通过数值量化隐写操作对原始图像造成的失真程度。
- 可视化分析界面:系统可一键生成多维度对比图,包括原始图、含密图、增强后的灰度差异图、直方图对比以及系统运行状态实时报告。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 工具箱需求:Image Processing Toolbox(图像处理工具箱)。
- 硬件要求:标准桌面或笔记本电脑,至少 4GB 内存。
详细实现逻辑及流程
1. 载体与数据预处理
系统首先加载指定的 carrier 图像。如果图像为 RGB 彩色格式,则调用算法将其转换为单通道灰度图。随后,系统将预定义的秘密字符串转换为 8 位二进制编码。为了确保提取时的准确性,系统会计算二进制流的总长度,并将其转换为一个 32 位的二进制头。
2. 异或加密实现
在信息嵌入之前,系统利用用户设定的加密密钥初始化随机数种子(
rng)。根据秘密信息的总长度生成一组伪随机比特序列,并将原始信息比特流与该随机序列进行异或运算。这一步骤将明文转换为看似随机的加密二进制流。
3. LSB 信息嵌入算法
系统采用空间域隐写技术。首先将二维图像矩阵展开为一维向量,计算嵌入容量是否满足要求(信息位 + 32位长度头)。在嵌入时,使用位设置函数(
bitset)将每个像素值的第 1 个比特(最低位)替换为对应的加密信息位。嵌入完成后,将向量还原为图像矩阵格式并保存。
4. 提取与解密流程
提取阶段是嵌入的逆过程:
- 长度识别:从含密图像的前 32 个像素中提取 LSB 位,解析出秘密信息的总位长度。
- 比特流提取:根据解析出的长度,从后续像素中依次提取存储加密位的比特。
- 逆向解密:使用与嵌入阶段相同的密钥再次初始化随机数种子,产生相同的伪随机序列,与提取的比特流进行异或运算,利用异或运算的可逆性还原出原始二进制流。
- 文本重构:将还原的比特流按 8 位一组重新组合,并映射回对应的字符。
5. 评价指标计算
系统通过对比原始图像与含密图像的像素值差异来评估性能。MSE 反映了平均像素改变量,而 PSNR 则以分贝(dB)为单位衡量图像的保真度。通常 PSNR 值高于 30dB 表示肉眼难以察觉两者的区别。
关键函数与算法说明
- bitset / bitget:这是 LSB 算法的核心。
bitset 用于将特定位置的比特改为目标值,而不影响其他位;bitget 用于从指定像素值中读出特定的二进制位。 - rng / randi:实现流加密算法的关键。通过固定种子(Key)产生可重复的随机比特序列,实现加密与解密的同步。
- imhist:用于生成直方图。通过对比嵌入前后的直方图,可以分析隐写算法对图像统计特性产生的影响。
- dec2bin / bin2dec:实现十进制、字符串形式与二进制位流相互转换的基础工具。