基于 MATLAB 实现的流载体的LSB隐藏项目

♻️ 资源

大小: 1.43MB

➡️ 资源下载: https://download.csdn.net/download/s1t16/87425290

一、 流载体的LSB方法

  1. 嵌入:选择一个载体元素的子集

    ,其中共有


    个元素,用以隐藏秘密信息的


    个比特。然后在这个子集上执行替换操作,把


    的最低比特用


    来替换。

  2. 提取:找到嵌入信息的伪装元素的子集

    ,从这些伪装对象中抽出它们的最低比特位,排列之后组成秘密信息。

二、 选择隐藏位置子集的方法

  1. 顺序选取

缺点:已嵌和未嵌部分数据特征不同。

  1. 随机间隔法

用伪装密钥k作为伪随机数发生器的种子,生成一个伪随机序列,嵌入位置为

三、 LSB方法的特点

  1. 简单,易实现,容量大。
  2. 安全性不高,不能抵抗叠加噪声、有损压缩等破坏。

四、 LSB算法的基本原理

对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。

五、 LSB算法基本步骤

  1. 将原始载体图像的空域像素值由十进制转换成二进制;
  2. 用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;
  3. 将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。

六、 代码实现与解释

使用MATLAB实现LSB算法,用lsb_decode函数实现秘密信息嵌入,用lsb_encode函数实现秘密信息提取,之后img_lsb.m主程序对这两个函数进行调用测试,最后对提取信息进行误码率检测。

  1. lsb_encode

如果只把信息保存在一个像素中很容易丢失,所以根据信息长度与载体图片的长度划分小块,以一个小块存储一位信息,能大大增加信息隐藏的健壮性。

  1. lsb_decode函数

由于嵌入信息时是一小块为一个整体,所以提取时也同样要这样做,由于图片在传输或者保存过程中可能会有一些改变,所以计算每个小块内隐藏信息的阈值,如果一半以上为1则这个小块隐藏的信息为1否则为0。

  1. 主程序img_lsb.m

在调用嵌入函数之前,需要保证载体图片为灰度图片,如果载体图片不足以隐藏秘密信息,则人为把载体图片扩充以隐藏,以保证信息的正常嵌入。

调用提取函数,获得秘密信息。

最后计算一下提取的信息与隐藏信息的误码率,用于查看实验效果。

七、 实验结果展示

载体原图:lena_g.bmp 利用LSB嵌入秘密信息的图片:hide.bmp

运行结果:

相关推荐
天天进步201520 分钟前
Python全栈项目--校园食堂点餐与推荐系统
开发语言·python
aaPIXa62221 分钟前
C++模板元编程:编译期计算Fibonacci数列
java·开发语言·c++
eybk37 分钟前
写一个可以编制pdf文件的python程序
开发语言·python·pdf
cui_ruicheng1 小时前
Python从入门到实战(八):封装、多态与抽象类
开发语言·python
apihz1 小时前
台风实时与历史详情查询免费 API 接口完整教程
android·开发语言·tcp/ip·dubbo·台风·天气预报
知无不研1 小时前
c语言和c++中的静态关键字
开发语言·c++·静态关键字
bksczm1 小时前
Linux之信号量(POSIX标准)
java·开发语言
吠品2 小时前
PHP里取月份最后一天的几种方式
java·开发语言·eureka
CallmeFoureyes2 小时前
使用 C# 提取 Word 文档中的表格数据
开发语言·c#·word
张某布响丸辣2 小时前
告别本地环境灾难:Java 后端实战 Sealos DevBox,一套云端开发到上线完整闭环
java·开发语言·sealos·devbox