2007-1-14 03:32

根据人类视觉系统的特性,人眼对于细微的亮度变化的敏感度很低,特别是当图像对比度很小的时候。最低有效位算法(LSB:least significant bits)利用的就是这一人类生理特性。它利用图像的视觉冗余,将嵌入信息转换为二进制数据码流后依次写到掩体图像各RGB字节的最低有效位上面(这里最低有效位指的是图像RGB字节的最后一位)。对于掩体图像来说,仅相当于叠加了一个能量微弱的信号,在视觉上很难察觉,从而达到迷惑攻击者和保护秘密信息的目的。

实际应用上LSB算法通常与各类加密和压缩算法结合,先对待隐藏的信息进行预处理,然后再隐写入文件。

经过LSB算法处理过的图片大小与原图片完全一样,因此不能通过比较文件大小来检测其是否包含隐藏数据。

不过通常该算法实现的时候都会在位图文件头(BitMapFileHeader)的两个保留字段(WORD)里留下某些信息以方便将来提取之用,例如隐藏的信息长度以及某些自定义的信息。由于保留字段默认值为0,因此可以通过检测该两个字段是否为0来简单判断bmp文件是否包含有秘密数据。

LSB算法是一种典型的时空域算法,虽然应用简单高效,但是稳健性很差。恶意攻击者可以通过使用加噪,压缩,拉伸,剪切,旋转等简单变换来破坏隐藏信息的完整性,这时候嵌入信息就不能得到有效的恢复。

附上BMP文件格式:

BMP 图象文件通常分为四个部分:位图文件头(BitMapFileHeader)、位图信息头(BitMapInfoHeader)、调色板(Palette)和位图数据(ImageData)。位图文件头是一个长度为14字节的结构,其中包含了BMP文件的类型、文件大小和位图起始位置等信息,其定义如下:

typedef struct tagBitMapFileHeader{

WORD bfType;                //文件类型

DWORD bfSize;                //文件大小

WORD bfReserved1;                //保留字段1

WORD bfReserved2;                //保留字段2

DWORD bfOffBits;                //数据偏移

} BitMapFileHeader;

其中WORD为16位无符号整数,DWORD为32位无符号整数,字段bfType的值规定文件类型只能是BM(即0x424D)。两个WORD类型的保留字段默认为0,有些信息隐藏技术就是利用此两个字段来存储图象是否已经隐藏信息及已隐藏信息的长度,字段bfOffBits则给出了BMP图象数据的存储位置。

位图信息头是一个长度为40字节的结构,描述了位图的尺寸、颜色等信息,其定义为:

typedef struct tag BitMapFileHeader {

DWORD biSize;                        //位图文件头的大小(包括调色板)

DWORD biWidth;                        //图像宽度(列数)

DWORD biHeight;                        //图像高度(行数)

WORD biPlanes;                        //目标设备的位平面数,必须置1

WORD biBitCount;                        //每个图象素的位数,必须为1、4、8或24

DWORD biCompression;                   //压缩方式

DWORD biSizeImage;                //图像的字节数

DWORD biXPelsPerMeter;        //目标设备水平方向每米长度上的像素数

DWORD biYPelsPerMeter;        //目标设备垂直方向每米长度上的像素数

DWORD biClrUsed;                //颜色表中点阵位图实际使用的颜色数

DWORD biClrImportant;                  //给出重要的颜色索引值,若被置为0则所有的颜色都是重要的

} BitMapFileHeader;

其中biCompression的值为0表示位图数据不压缩,值为1表示BI_RLE8压缩类型(即每像素为8位的点阵位图采用行程编码格式);值为2表示BI_RLE4压缩类型(即每像素为4位的点阵位图采用行程编码格式),这里为了能隐藏更多的信息将其设为0。

调色板用于说明位图中像素的颜色,它有若干项,每一项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:

typedef struct tagRGBQUAD {

BYTE rgbBlue;

BYTE rgbGreen;

BYTE rgbRed;

BYTE rgbReserved;

} RGBQUAD;

调色板数据中RGBQUAD结构数据的个数由位图信息头里的biBitCount来确定。当biBitCount=1,4,8 时,分别有2,16,256项;当biBitCount=24时(即24位真彩色BMP图像),没有调色板数据。

位图信息头和调色板组成位图信息。位图数据记录了位图的每一个象素值。每个象素值所占的位数即为biBitCount的值:当biBitCount=24时,1个象素占24位空间。记录顺序从位图的左下角开始,即在扫描行内是从左到右,扫描行之间则是从下到上:也就是说图象数据是以相反的顺序存储的,即从文件中读出的第一行实际上是图象的最后一行。因此BMP位图数据的大小(在不压缩情况下)为DataSize= biHeight*biWidth* biBitCount/8。然而,实际上Windows规定一个扫描行所占的字节数必须是4的倍数(即以DWORD为单位),不足的用0填充。例如,对于24位BMP图像,设width=101,则width*24/8=303,但是实际上每行图像所含字节数为304,即在303的基础上加上1使得其成为4的倍数。这样,每行图象数据的最后可能有0 至3 个字节是多余的,且均为0。显然这些多余的字节是不能隐藏信息的。

24位真彩色位图有其自身的特点,由于它没有调色板数据,因此从第55 个字节开始,是该文件的图象数据部分,数据的排列顺序以图象的左下角为起点,每连续3 个字节便描述图象一个象素点,这三个字节分别代表B、G、R(即蓝、绿、红)三基色在此像素中的亮度,若某连续三个字节为:FFH ,00H ,00H ,则表示该像素的颜色为纯蓝色。

php+bmp+加密,郁闷啊,谁知道BMP图片加密技术吗相关推荐

  1. android图片资源加密解密,Android Glide实现图片加密解密 自定义格式

    前言 Glide作为一个简单易用的库,平时我们使用基本上就是 Glide.with(this).load(data).into(view) 本文主要介绍,如何加载已加密的图片.围绕2种类型:File本 ...

  2. 8tupian图片加密平台源码 v3.5

    介绍: 8tupian图片加密平台采用 php+mysql 的环境,php版本是php5.6或以上. 源码是通过调用八图片平台的API,进行设计开发的.用此源码搭建的网站,用户资金直接进入你自己的接口 ...

  3. php 上传图片加密,图片加密平台源码_图片在线加密+包含三种模式上传图片+支付后看原图-html资源网...

    采用 php+mysql 的环境,php 版本是 php5.6. 源码是通过调用八图片平台的 API,进行设计开发的.用此源码搭建的网站,用户资金直接进入你自己的支付接口. 8tupian 图片加密平 ...

  4. 8tupian图片加密平台v2.7 对图片进行加密的网络平台+包含三种模式上传图片+可二次开发修改

    8tupian图片加密平台v2.7 对图片进行加密的网络平台+包含三种模式上传图片+可二次开发修改 8tupian图片加密平台采用 php+mysql 的环境,php 版本是 php5.6. 源码是通 ...

  5. 初探无水印信息图片加密技术

    原文链接 https://yq.aliyun.com/articles/72267 背景 随着手机app越来越多,对于App信息安全面临的挑战越来越大,像接口传递的验证信息这些相对保密的信息如果直接放 ...

  6. BMP文件格式详解(BMP file format) (转)

    自:http://www.cnblogs.com/Jason_Yao/archive/2009/12/02/1615295.html BMP文件格式,又称为Bitmap(位图)或是DIB(Device ...

  7. BMP文件格式详解(BMP file format)

    BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式.由于它可以不作任何变换地保存图像 ...

  8. 怎么把bmp转换成pdf?bmp转pdf格式软件推荐

      相信大家应该对图片格式有所了解,bmp就是其中的一种图片格式,而pdf是一种常见的文件格式.两者本来没有太大的练习,不过有些小伙伴在后台向我咨询,如何实现bmp转pdf格式?那今天就给大家来一期b ...

  9. BMP文件格式详解(BMP file format)[图文解说]

    BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式.由于它可以不作任何变换地保存图像 ...

  10. 如何在html中使用bmp文件,bmp是什么文件格式?bmp文件用什么打开?

    说起bmp,也许大家都不会陌生了,我们电脑中存储的很多文件都是这个格式的,很多朋友或许知道BMP是图形问价,但bmp文件具体又是什么呢?接下来我们来了解一下. bmp是什么文件 BMP(全称Bitma ...

最新文章

  1. itmz文件如何打开_如何使用proteus8打开低版本proteus7的仿真文件?
  2. NET 2.0中WinForm自定义的程序配置存放到哪里去了
  3. JAVA通信编程(三)——TCP通讯
  4. 电脑pin码忘了登录不进系统_想要大屏打王者,家里电视用不了?投屏到电脑试试...
  5. 承包你所有壁纸需求,高图网图片,美到窒息
  6. Java 初始化 代码块_Java中初始化块详解及实例代码
  7. 是什么决定了创业的成败?
  8. 男友问别人:你裙子里穿什么了?
  9. chrome官网下载win64离线安装包
  10. html5拆红包源码,最新1月拆红包源码强制分享朋友圈分享群防封裂变红包游戏
  11. hdu5294||2015多校联合第一场1007 最短路+最大流
  12. Pygame实战:Python趣味编程之我的兔子终于变了游戏啦
  13. 智能手环guard日志获取-兔盯云
  14. 利用Grafana为你的Loki添加告警
  15. 开发小程序需要服务器吗?小程序服务器配置要求
  16. 婚姻就是找个合适的人过日子
  17. 计算机科学与技术——软科中国大学专业排名
  18. 一名优秀的销售人员应该具备哪些素质和能力?
  19. android xml设置roboto字体,Android:想要为整个应用程序而不是运行时设置自定义字体...
  20. 编译问题configure: error: C compiler cannot create executables

热门文章

  1. 打开优盘显示要格式化怎么办?
  2. 渗透技巧总结、渗透技巧
  3. 千兆SFP光模块可以在万兆SFP+端口上使用吗?
  4. Dual-edge triggered flip_flop(Dualedge)
  5. 技术分享 | show engine innodb status中Pages flushed up to 的含义
  6. (附源码)springboot学生宿舍管理系统 毕业设计 211955
  7. “舒淇半停工原因”上热搜:人生下半场,拼的是健康
  8. 20201009 Latex参考文献自动排序 \begin{thebibliography}
  9. 解决Windows更新失败(0x8007000d)的详细方法
  10. 计算机硬件与哪些部分组成部分,计算机硬件组成及各部分功能有哪些?