`
谁解怨妇心
  • 浏览: 28395 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

在BMP位图中隐藏数据

阅读更多
   相信看过Andrew那本很经典的《计算机网络》都会记得第N章(N是多少我忘记了……)里面提到的在一幅图像里面隐藏了一本《莎士比亚》全集的数据。
    这种代码在网上已经是很常见的了,不过最近因为研究着拆游戏的cg立绘之类的东西就学习了一下BMP图像的格式就想到一个不同隐藏方法。
    网上的代码大多都是利用每个像素里面颜色后面几位来存储要隐藏的数据,这样的话在颜色比较单一的情况下对图像的影响是十分明显的。而我的代码中是将24位的图像转换为32位图像后在alpha通道的位置写入数据。
    在24位位图中,每个像素用三个字节存储,而32位位图则是4个字节,除了RGB通道外,还有多出来的一个字节是alpha通道。alpha通道是用来存储透明度的信息的,例如有两幅图片,一幅是风景另外一幅是一间房子,房子上有个玻璃窗。按照常理来说,当两幅图像重叠的时候可以透过玻璃看到外面的景物的,而ALPHA混合就是用来实现这个功能。Alpha混合根据图像的alpha通道的值来计算两幅图像重叠后那一点的色彩值。所以修改这个值在位图上是看不出改变的。
    还有一点要注意的是位图文件里面每一行像素数据的字节数一定要是4的倍数,所以在位图中每隔位图宽*3个字节数会有几个0字节是用来填充的,所以转换的时候要跳过这几个字节。
    而位图文件头和信息头的修改可以直接参考MSDN相关说明。
    程序和源码见附件。很久没用ASM写程序,用来练一下手,代码写得有点难看orz
  • bin.rar (5.8 KB)
  • 下载次数: 10
分享到:
评论
4 楼 谁解怨妇心 2009-10-15  
night_stalker 写道
您谦虚了 …… 代码写得相当的好看,命名非常的标准正统 口牙

我是命名白痴,实在是想不到要怎么给变量命名了……

RednaxelaFX 写道
32位BMP在某些软件(例如Windows自带的图片浏览器)里是看不出alpha效果,但用Fireworks或者PS打开就还是能看到。之前做BMW的时候在里面也碰到过需要处理32位BMP的情况,我懒得写工具,让苦工用XnView批量转成PNG再编辑然后再压回去YGA……

在颜色比较单一的图片里藏数据,要保持原本的平滑感确实比较麻烦。不过说不定可以用类似PNG做差分那样,根据上边、左上边和左边的几个像素的数据来使用较小的差值藏入较大的实际值?

这样大概是可行的,我翻了翻别人信息隐藏课程那本教材有说到这方面的内容,不过要做到高级的隐藏需要的数学跟通信方面的知识太深了,我这种只能算是玩票+业余的。

Brainloller和Braincopter可以开创用PS编程的新时代啊囧
3 楼 RednaxelaFX 2009-10-13  
话说我想起了BrainlollerBraincopter
2 楼 RednaxelaFX 2009-10-13  
32位BMP在某些软件(例如Windows自带的图片浏览器)里是看不出alpha效果,但用Fireworks或者PS打开就还是能看到。之前做BMW的时候在里面也碰到过需要处理32位BMP的情况,我懒得写工具,让苦工用XnView批量转成PNG再编辑然后再压回去YGA……

在颜色比较单一的图片里藏数据,要保持原本的平滑感确实比较麻烦。不过说不定可以用类似PNG做差分那样,根据上边、左上边和左边的几个像素的数据来使用较小的差值藏入较大的实际值?
1 楼 night_stalker 2009-10-13  
您谦虚了 …… 代码写得相当的好看,命名非常的标准正统 口牙

相关推荐

    24位BMP位图信息隐藏和读取(c语言实现)

    本项目聚焦于24位BMP位图中的信息隐藏和读取,这涉及到数字图像处理、位运算以及文件I/O等多个知识点。 首先,24位BMP位图每像素由红、绿、蓝三种颜色的8位组成,共24位。这意味着每个像素可以表示16,777,216种颜色...

    信息加密——基于BMP位图的信息隐藏算法 源代码

    信息隐藏是一种技术,用于在看似普通的数据中嵌入秘密信息,通常用于版权保护、数字水印以及安全通信等领域。BMP(Bitmap)图像文件格式是信息隐藏的常见载体,因为它不包含任何压缩,每个像素的数据都可以直接访问...

    在bmp中隐藏文件

    在 BMP 图像文件中隐藏数据是一种常见的数据隐写术(Steganography)方法,它利用了 BMP 文件格式的特性来嵌入额外的信息。BMP,全称 Bitmap,是微软公司开发的一种位图图像格式,广泛应用于Windows操作系统。下面将...

    基于24位bmp位图的信息隐藏编程实例

    在IT领域,信息隐藏是一种重要的安全技术,它涉及在数据中嵌入秘密信息而不改变其外观或功能。在这个“基于24位bmp位图的信息隐藏编程实例”中,我们将探讨如何利用位图图像来实现这一目标。位图,尤其是24位色深的...

    BmpMAN - 一个能在bmp文件中隐藏文件的工具

    BMPMAN 是一款独特的工具,它允许用户在24位色的.bmp位图图像文件中隐藏其他文件,这种技术通常被称为数据隐写术或隐藏存储。数据隐写术是一种信息安全技术,用于在看似普通的文件(如图片)中嵌入秘密信息,以实现...

    隐藏文件内容到bmp

    2. **位平面选择**:选择BMP图像的特定位平面,比如红色、绿色或蓝色通道中的某些位,作为隐藏数据的载体。 3. **数据嵌入**:根据二进制文件的内容,调整图像的对应像素颜色值。这个过程需要确保调整后的像素变化对...

    BMP图像信息隐藏 解读

    BMP图像信息隐藏是一种技术,主要用于在BMP位图文件中嵌入秘密信息,这通常用于数据安全、版权保护或者隐写术。BMP是Bitmap的缩写,是一种未经压缩的图像文件格式,由Microsoft开发,广泛应用于Windows操作系统。在...

    在BMP文件内部隐藏其他文件

    "在BMP文件内部隐藏其他文件"这一技术就是其中的一种,它允许我们将一个或多个文件嵌入到一个BMP(位图图像)文件的元数据或未使用的像素数据中,实现数据的隐蔽存储。 BMP文件格式是一种常见的图像文件格式,它以...

    用位图隐藏文件

    在给定的压缩包文件中,"用位图隐藏文件"的程序可能包含了一个能够将秘密文件嵌入到位图图像中的应用程序。下面将详细解释这种技术的工作原理及其相关知识点。 位图图像由像素组成,每个像素都有一个颜色值,通常由...

    隐藏ExE文件到bmp中

    在这个案例中,重点是将一个可执行文件(ExE)嵌入到一个位图(BMP)文件中,使得外行人无法察觉到其中隐藏的内容。 首先,我们要理解BMP文件格式。BMP是一种常见的位图图像文件格式,它存储像素数据和元信息,如...

    数字水印程序,bmp位图读取

    数字水印分为可见水印和不可见水印,前者对肉眼可见,而后者则隐藏在数据的噪声中,不影响原始内容的观看体验。 接下来,我们关注"BMP位图"。BMP是一种无损的图像文件格式,由微软开发,用于存储Windows和OS/2操作...

    数字水印图像处理常用BMP位图

    在这个压缩包中,重点是“BMP位图格式(灰度)”,这意味着我们将探讨的是基本的位图图像格式以及在灰度图像上的数字水印应用。 BMP(Bitmap)是一种无损的、非压缩的图像文件格式,由微软开发并广泛应用于Windows...

    BMP.rar_bmp信息隐藏_信息隐藏 bmp

    - **像素偏移**:在像素数据中插入额外的行或列,这些行或列包含了隐藏的信息。 - **颜色空间转换**:将图像从一种颜色空间转换到另一种,如从RGB到HSI,然后在转换过程中嵌入信息。 3. **加密**:为了增加隐藏...

    文件隐藏于BMP图片中

    3. **嵌入数据**:在BMP文件的像素数据中找到合适的位置嵌入TXT文件的数据。通常会选择不影响视觉质量的位置,例如在图像的低阶位或者在图像的边缘区域。可以使用位操作(如位移、与、或、异或)将TXT文件的字节与...

    对BMP位图取位平面

    在计算机图形学中,BMP(Bitmap)是一种常见的位图文件格式,用于存储像素数据。在处理BMP图像时,有时我们...在处理BMP位图时,对位平面的操作提供了极大的灵活性和创造力,是图像处理和数字信号处理领域的重要工具。

    bmp文件的信息隐藏

    4. **信息嵌入**:将加密后的信息分割成单个位,并根据策略插入到BMP文件的像素数据中。 5. **保存修改**:最后,保存修改后的BMP文件,隐藏信息就完成了。 6. **解密与提取**:要提取隐藏的信息,需要读取BMP文件,...

    BMP片中隐藏信息C++代码

    BMP(Bitmap)是一种常见的位图格式,它允许我们以二进制形式存储图像数据,这为信息隐藏提供了可能性。在描述中提到的"LSB(Least Significant Bit,最低有效位)算法"是信息隐藏的一种常用方法,它通过修改图像...

    基于LSB的BMP文件信息隐藏

    在LSB方法中,隐藏信息被嵌入到原始BMP图像的数据位中,通常不会显著改变图像的视觉质量,从而达到信息的隐蔽传输。 LSB信息隐藏的基本原理是利用图像像素值的最低位(LSB)来存储秘密信息。每个像素可以看作是多个...

    VC++实现bmp位图打开和显示.

    ### VC++实现BMP位图打开和显示:深入解析与实践 #### 一、课程背景与目标 在《数字图像处理》课程中,通过实践项目加深对C++编程语言的理解和应用,尤其聚焦于图像处理领域。本次实验旨在让学生掌握如何使用C++...

Global site tag (gtag.js) - Google Analytics