目录

  • 实验环境
  • 系统设计
    • BMP文件格式
    • LSB空域信息隐藏算法
      • 嵌入算法
      • 提取算法
      • LSB空域信息隐藏算法分析
        • 优点
      • 缺点
  • 系统实现
    • HidenMsg.txt
    • 信息隐藏:HideMsg.m
    • 信息提取:ShowHidenMsg.m
  • 参考文献

实验环境

  • MATLAB

系统设计

BMP文件格式

BMP(Bitmap file)文件是Windows采用的一种标准的文件格式,Windows系统下各种图像处理软件都支持这种文件格式。BMP文件也是信息隐藏常用的携带秘密信息的载体之一。
       BMP图像文件是一种位图文件,也就是将图像划分为一个个的栅格,其中每个栅格称为像素。所以每幅图像都可以看作是由一些像素点组成的矩阵。对于一幅灰度图像,一般使用多个比特表示像素点的灰度值,而比特数据中的每一位都表示了一个0或1的二值平面,此平面称为位面。假设使用1比特数据表示像素点的灰度值,那么此图像为8个位面,其中最低位面用位面0表示,最高位面用位面7表示。BMP图像文件大致可分为两个部分,包括头文件与位图数据,而更详细的可分为四个部分:

  • 头文件数据。包含文件的数据类型,显示设置等内容。
  • 位图的构造信息。包含位图的边长,压缩的方式,还有颜色信息。
  • 色板。很多图像文件没有此部分,如24位的真彩色BMP图像就不含有调色板这个部分。
  • 位图数据。此部分是由BMP图像文件的位数所决定的,真彩色图像中使用RGB此外,其余图像使用第三部分中的颜色索引。

LSB空域信息隐藏算法

LSB(Least Significant Bit)算法将隐藏的信息比特按位(bit)顺序嵌入原始图像像素的最低位面(Least Significant Bit)

嵌入算法

LSB算法嵌入流程如下:
       (1)对原始图像中每个像素点的灰度值进行变换,由十进制转换为二进制;
       (2)将秘密信息转换为二进制序列,并将原始图像中像素点的最低比特位替换为二进制序列中的每一比特信息;
       (3)在替换过程结束后,将像素点的二进制数据转换回十进制数据,保存为载密图像。

提取算法

与嵌入算法对应,LSB算法提取流程如下:
       (1)对载密图像中每个像素点的灰度值进行变换,由十进制转换为二进制;
       (2)提取图像像素点中最低有效位的数据,根据嵌入顺序进行组合得到原秘密序列。

LSB空域信息隐藏算法分析

优点

LSB算法的优点如下:

  • 可嵌入的信息量大;
  • 算法简单,易于实现;
  • 载密图像失真小;
  • 可以避免由于文件格式改变导致的秘密信息损坏。

缺点

LSB算法的缺陷也很明显:

  • 鲁棒性差;
  • 抗隐写分析的能力弱。

系统实现

HidenMsg.txt

存储所需隐藏的秘密信息

信息隐藏:HideMsg.m

LSB算法嵌入过程的关键步骤就是将原始图像最低的一个位平面替换为要隐藏的秘密信息。
       先将原始图像像素的最低位面设置为0。(可以判断像素点的灰度值是否可以被二整除,如果不可以被整除,则将最低位取反。)
       此后,就可以一位位地根据秘密信息改变像素的最低有效位,实现秘密信息的嵌入。

%打开图片
picture=imread('Pic.bmp');%将图片转化为double类型
Double_picture=double(picture);%读取所需隐藏的信息文件
file=fopen('HidenMsg.txt','r');
[HidenMsg,MsgLen]=fread(file,'ubit1');%获取图片分辨率
[Length,Width]=size(Double_picture);p=1;
for j=1:Widthfor i=1:Length%最低位面替换成隐藏信息Double_picture(i,j)=Double_picture(i,j)-bitand(Double_picture(i,j),1)+HidenMsg(p,1);if p==MsgLenbreakendp=p+1;endif p==MsgLenbreakend
end%保存包含隐藏信息的bmp文件
Double_picture=uint8(Double_picture);
imwrite(Double_picture,'PicWithHidenMsg.bmp');%显示未嵌入信息的图像
subplot(121);
imshow(picture);
title('未嵌入信息的图像');%显示嵌入信息的图像
subplot(122);
imshow(Double_picture);
title('嵌入信息的图像');%关闭文件
fclose(file);

信息提取:ShowHidenMsg.m

通过LSB算法嵌入过程的关键步骤可以看出:载密图像的最低比特位就是秘密信息的比特流。
       所以只需要对载密图像中每个像素点的灰度值进行变换,由十进制转换为二进制,再提取图像像素点中最低有效位的数据,根据嵌入顺序进行组合就可以得到秘密信息。

%打开隐藏信息的图片
picture=imread('PicWithHidenMsg.bmp');%将图片转化为double类型
Double_picture=double(picture);%获取图片分辨率
[Length,Width]=size(Double_picture);%打开文件
file=fopen('ShowHidenMsg.txt','wb+');%设置隐藏信息长度
%隐藏的字符数*8 bit
MsgLen=10*8;p=1;
for j=1:Widthfor i=1:Length%最低位面是隐藏信息fwrite(file,bitand(Double_picture(i,j),1),'ubit1');if p==MsgLenbreakendp=p+1;endif p==MsgLenbreakend
end%关闭文件
fclose(file);

参考文献

[1] 孔祥维等.多媒体信息安全实践教程.科学出版社

基于LSB的空域信息隐藏实现相关推荐

  1. 基于空间域的信息隐藏关键技术研究

    实践题目:基于空间域的信息隐藏关键技术研究 目标是实现对320x240的灰度图像(样本自选,不能是lena图像)进行信息隐藏设计,应用空间域信息隐藏方法(例如LSB替换方法等)进行实验测试.对上述技术 ...

  2. matlab信息隐藏算法,实验四--基于DCT域的信息隐藏算法

    <实验四--基于DCT域的信息隐藏算法>由会员分享,可在线阅读,更多相关<实验四--基于DCT域的信息隐藏算法(6页珍藏版)>请在人人文库网上搜索. 1.实验四 基于DCT域的 ...

  3. 基于深度学习的信息隐藏技术的研究总结(一)

    信息隐藏技术的相关知识总结 你好! 本人关于信息隐藏方面的研究很久了,主要是利用深度学习方面的技术来实现.由于电脑等原因,一些东西就找不到了,所以想通过写博客的方式进行记录,一方面是对学过的东西.技术 ...

  4. matlab 图像处理 histogram shifting 基于直方图平移的信息隐藏

    %% histogram shifting I = imread('liftingbody.png');I2 = I;[counts, location] = imhist(I2);[~, maxid ...

  5. 利用MATLAB实现WAV音频的LSB信息隐藏

    0. 背景 音频信息隐藏技术就是将秘密数据直接嵌入音频载体中,但不影响原载体的使用价值,也不容易被人的知觉系统觉察或注意到. 音频信息隐藏技术作为信息隐藏技术的一个重要分支,受到越来越多的关注. 近年 ...

  6. 基于DCT信息隐藏 数字水印 DCT matlab实现

    1.DCT变化 2.DCT中频: 中频指DCT变化后从左上到右下的线经过点 3.代码实现 %------------------------------------------------------ ...

  7. HTML 信息隐藏与提取

    0x00 信息内容安全实验报告 [实验目的] 了解格式化文件信息隐藏的特点,掌握如何利用HTML语言的特征来隐藏秘密信息,实现基于HTML语言的信息隐藏. [实验环境] (1) WindowsXP或 ...

  8. 信息隐藏——DCT隐写

    DCT隐写 [实验目的]: 了解DCT的系数隐写 [实验内容]: ■Jepg 压缩算法的回顾 ■用MATLAB实现图像DCT相关操作 ■完成基于图像DCT的信息隐藏实验 两点法的嵌入和提取 三点法的嵌 ...

  9. 计算机图像隐藏信息,信息隐藏原理及应用

    <信息隐藏原理及应用>是2011年8月5日清华大学出版社出版的图书,作者是葛秀慧.[1] 本书可以作为计算机应用.网络工程.通信与信息系统.信号与处理.信息安全与密码学.电子商务专业的本科 ...

最新文章

  1. 【Android】ViewPager实现无限循环滚动
  2. 迷茫与飞跃:9月开始,明确了研究方向,功力提升明显,成绩比较显著
  3. Axure RP使用攻略--入门级(五)系统函数与变量
  4. 数据可视化,必须注意的30个小技巧!
  5. 【Boost】boost库asio详解7——boost::asio::buffer用法
  6. c语言数组与指针的基础知识,C语言学习笔记之数组与指针的关系
  7. linux学习查看日志命令
  8. 解决 SmallPDF 联网验证和试用期过期问题
  9. 虚拟化时代 智能数据管理架构才是王道
  10. android+统计功能,React Native 轻松集成统计功能(Android 篇)
  11. PHP Predefined Interfaces 预定义接口
  12. mysql 存储过程代码_mysql存储过程语法与实例
  13. JavaScript:时间戳(timestamp)与时间(Date)转换
  14. android 锁屏界面来电话,android锁屏界面短信解锁指向怎么修改?
  15. 方便的Unity真机调试工具:LogViewer
  16. PyS2:RDD编程基础(一)
  17. 全面剖析:“外包”浪潮以及程序员应对攻略
  18. python实现简单图书管理系统
  19. golang入门笔记——kitex
  20. 游戏辅助制作核心--植物大战僵尸逆向之太阳花加速生产阳光(三)

热门文章

  1. RK3399平台开发系列讲解(WIFI)5.56、什么是WIFI无线局域网
  2. Java调用Python
  3. 什么是Web Service:/什么是Web服务
  4. 初级软件测试技能学习总结
  5. 一步一步求解约瑟夫(Joseph)问题
  6. 2021年广西贵港高考成绩查询6,2021年贵港高考状元是谁分数多少分,历年贵港高考状元名单...
  7. 景联文科技:深度探究自动驾驶重要方向——车路协同
  8. 苹果AIFF格式音频如何转换成FLAC格式
  9. 看懂mac OS X的内存状态
  10. electron 窗口BrowserWindow