资源简介
基于LSB的BMP文件信息隐藏,C++实现。
Win32控制台应用程序。

代码片段和文件信息
/*********************************************
* 功能:基于LSB的BMP文件信息隐藏
* 作者:aikesiluoente
* 构建日期: 2010/6/10
* 本程序参考自:“foxtail-处理bmp图象-2008/3/4”
在此表示感谢
*********************************************/
#include “Bmp24.h“
#include
#include
#include
Bmp24::Bmp24(void)
{
_pbmfh = new tagBITMAPFILEHEADER;
_pbmih = new tagBITMAPINFOHEADER;
_pbmd = NULL;
_size = 0;
}
Bmp24::~Bmp24(void)
{
delete _pbmfh;
delete _pbmih;
if (_pbmd)
{
delete _pbmd;
}
}
//载入BMP文件
void Bmp24::LoadFile(const char *filename)
{
ifstream InFile;
InFile.open(filename ios::in | ios::binary);
InFile.read((char*)_pbmfh sizeof(tagBITMAPFILEHEADER));
cout << “+-----------+“ << endl
<< “Read bmfh OK!“ << endl;
InFile.read((char*)_pbmih sizeof(tagBITMAPINFOHEADER));
cout << “Read bmih OK!“ << endl;
//直接定位BMP数据区,跳过调色板
_size = _pbmfh->bfSize - _pbmfh->bfOffBits;
_pbmd = new BYTE[_size];
InFile.read((char*)_pbmd _size);
cout << “Read bmd OK!“ << endl;
InFile.close();
cout << “Load file OK!“ << endl
<< “+-----------+“ << endl;
}
//保存BMP文件
void Bmp24::SaveFile(const char *filename)
{
ofstream OutFile;
OutFile.open(filename ios::out | ios::binary);
OutFile.write((char*)_pbmfh sizeof(tagBITMAPFILEHEADER));
cout << “+============+“ << endl
<< “Write bmfh OK!“ << endl;
OutFile.write((char*)_pbmih sizeof(tagBITMAPINFOHEADER));
cout << “Write bmih OK!“ << endl;
OutFile.write((char*)_pbmd _size);
cout << “Write bmd OK!“ << endl;
OutFile.close();
cout << “Save file OK!“ << endl
<< “+============+“ << endl;
}
//嵌入文本文件
void Bmp24::embedTxt(const char *filename)
{
ifstream TxtFile;
TxtFile.open(filename ios::in | ios::binary);
TxtFile.seekg(0 TxtFile.end);
DWORD TxtFileLength = TxtFile.tellg();
if (_size < TxtFileLength * 8)
{
return ;
}
cout << “M file length: “ << TxtFileLength << endl;
BYTE *pTxtFile = new BYTE[TxtFileLength];
TxtFile.seekg(0 TxtFile.beg);
TxtFile.read((char*)pTxtFile TxtFileLength);
TxtFile.close();
for (int i = 0 k = 0; i < TxtFileLength; ++i)
{
for (int j = 0; j < 8; ++j)
{
if ((pTxtFile[i] >> j & 0x01) == 0)
_pbmd[k+32] &= 0xfe;
else
_pbmd[k+32] |= 0x01;
++k;
}
}
for (int i = 0; i < 32; ++i)
{
if ((TxtFileLength >> i & 0x00000001) == 0)
_pbmd[i] &= 0xfe;
else
_pbmd[i] |= 0x01;
}
delete pTxtFile;
cout << “embedding file OK!“ << endl;
}
//提取文本文件
void Bmp24::ExtractTxt(const char *filename)
{
DWORD TxtFileLength = 0x00000000;
for (int i = 0; i < 32; ++i)
{
if ((_pbmd[i] & 0x01) == 0)
TxtFileLength &= 0x7fffffff;
else
TxtFileLength |= 0x80000000;
if (i < 31)
TxtFileLength >>= 1;
}
cout << “M‘ file length: “ << TxtFileLength << endl;
BYTE *pTxtFile = new BYTE[TxtFileLength];
for (int i = 0 k = 0; i < TxtFileLength * 8; ++i)
{
if (i && i % 8 == 0)
++k;
if ((_pbm
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3403 2010-06-13 15:07 Bmp24.cpp
文件 1281 2010-06-13 15:07 Bmp24.h
文件 1163 2010-06-13 15:07 Test.cpp
----------- --------- ---------- ----- ----
5847 3
- 上一篇:vs 2013基于IE浏览器的源代码
- 下一篇:平行束卷积反投影算法C语言实现
相关资源
- 二维码生成BMP
- Bmp图像处理.zip
- EAN13条码生成(C语言+VS2010)[包含EA
- MFC画图板,可以画一些基本图形,如
- 基于MFC的bmp图像处理268237
- 计算BMP24位真彩色图像PSNR的C++小程序
- mfc打开并显示BMP图片
- VC打开多种图像格式bmpjpggiftifraw
- 24位BMP图像用C++实现平移、旋转、镜像
- VC6基于对话框的BMP灰度图片显示和轮
- 数字图像处理 MFC bmp格式图片打开与保
- (LSB算法)数字水印的嵌入和提取V
- DICOM图片转换BMP的C++代码
- VC实现虚拟打印机的框架源代码
- (LSB算法)数字水印的VC++实现
- [毕业分享] MFC实现数字图像处理软件
- VC++单文档视图打开bmp图片
- 在内存中将bmp转JPG
- vc++调用usb摄像头,进行拍照,保存为
- Bmp2jpeg图片格式转换
- C语言读取BMP图像,并进行反色操作
- BMP180气压计STM32例程+51例程+数据手册
- 经典数字图像测试图灰度图,jpg,b
- 图像直方图均衡算法的实现 bmp格式
- bmp24位彩色图像转8位灰度图像纯C++
- 用VC++实现打开并显示bmp图片
- C++生成二维码并保存成BMP图片
- MFC 图像处理之灰度直方图显示BMP图片
- 数字水印的(LSB算法)嵌入和提取V
- 信息隐藏数字水印LSB算法
评论
共有 条评论