• 大小: 5KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: C/C++
  • 标签: 隐藏  提取  

资源简介

程序本身通过文本中的文字将对24位图进行信息嵌入隐藏其中,然后能通过程序将嵌入其中的信息提出,保存在另一个文本当中。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#pragma once
#pragma pack(1)
using namespace std;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned char BYTE;
//BMP文件头
typedef struct tagBITMAPFILEHEADER
{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
};
//BMP文件信息头
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
};

class Bmp24
{
public:
Bmp24(void);
~Bmp24(void);
void LoadFile(const char *filename);
void SaveFile(const char *filename);
void embedTxt(const char *filename);
void ExtractTxt(const char *filename);
private:
tagBITMAPFILEHEADER *_pbmfh; //指向BMP文件头
tagBITMAPINFOHEADER *_pbmih; //指向BMP文件信息头
BYTE *_pbmd; //指向BMP数据区
DWORD _size; //BMP数据区大小(以字节为单位)
};
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));
InFile.read((char*)_pbmih sizeof(tagBITMAPINFOHEADER));
//直接定位BMP数据区,跳过调色板
_size = _pbmfh->bfSize - _pbmfh->bfOffBits;
_pbmd = new BYTE[_size];
InFile.read((char*)_pbmd _size);
InFile.close();
cout << “读取文件成功!“ << endl;
}
//保存BMP文件
void Bmp24::SaveFile(const char *filename)
{
ofstream OutFile;
OutFile.open(filename ios::out | ios::binary);
OutFile.write((char*)_pbmfh sizeof(tagBITMAPFILEHEADER));
OutFile.write((char*)_pbmih sizeof(tagBITMAPINFOHEADER));
OutFile.write((char*)_pbmd _size);
OutFile.close();
cout << “保存文件成功!“ << endl;
}

//嵌入文本文件
void Bmp24::embedTxt(const char *filename)
{
int ik;
ifstream TxtFile;
TxtFile.open(filename ios::in | ios::binary);
TxtFile.seekg(0 TxtFile.end);
DWORD TxtFileLength = TxtFile.tellg();
if (_size < TxtFileLength * 8)
{

评论

共有 条评论