資源簡介
基于24位bmp位圖的信息隱藏編程實例,提供源代碼,可為信息隱藏技術的學習者提供參考

代碼片段和文件信息
//?BMPHider.cpp:?implementation?of?the?CBMPHider?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“BMPHider.h“
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBMPHider::CBMPHider()
{
m_pDib?=?NULL;
m_pWordData?=?NULL;
m_pFile?=?NULL;
m_pOldDibShow?=?NULL;
}
CBMPHider::~CBMPHider()
{
if(?m_pDib?!=?NULL?)
delete?[]?m_pDib;
if(?m_pWordData?!=?NULL?)
delete?[]?m_pWordData;
if?(m_pFile?!=?NULL)
delete?[]?m_pFile;
if?(m_pOldDibShow?!=?NULL)
delete?[]?m_pOldDibShow;
}
BOOL?CBMPHider::Load(?const?char?*pszFilename?)
{
CFile?cf;
if(?!cf.Open(?pszFilename?CFile::modeRead?)?)
return(?FALSE?);
DWORD?dwDibSize;
dwDibSize?=
cf.GetLength()?-?sizeof(?BITMAPFILEHEADER?);
unsigned?char?*pDib;
pDib?=?new?unsigned?char?[dwDibSize];
if(?pDib?==?NULL?)
return(?FALSE?);
BITMAPFILEHEADER?BFH;
try
{
if(?cf.Read(?&BFH?sizeof(?BITMAPFILEHEADER?)?)
!=?sizeof(?BITMAPFILEHEADER?)?||
BFH.bfType?!=?‘MB‘?||
cf.Read(?pDib?dwDibSize?)?!=?dwDibSize?)
{
delete?[]?pDib;
return(?FALSE?);
}
}
catch(?CFileException?*e?)
{
e->Delete();
delete?[]?pDib;
return(?FALSE?);
}
cf.Close();
if(?m_pDib?!=?NULL?)
delete?m_pDib;
if?(BFH.bfReserved1?!=?0)??????????//含有隱藏信息,保存其大小
{
if?(BFH.bfReserved2?==?0)
embfile_size?=?BFH.bfReserved1;
else
embfile_size?=?BFH.bfReserved1?+?65535;
}
m_pDib?=?pDib;
m_dwDibSize?=?dwDibSize;
m_pBIH?=?(BITMAPINFOHEADER?*)?m_pDib;
m_pPalette?=(RGBQUAD?*)?&m_pDib[sizeof(BITMAPINFOHEADER)];
m_nPaletteEntries?=?1?<biBitCount;
if(?m_pBIH->biBitCount?>?8?)?????????
m_nPaletteEntries?=?0;
else?if(?m_pBIH->biClrUsed?!=?0?)
m_nPaletteEntries?=?m_pBIH->biClrUsed;
m_pDibBits?=?&m_pDib[sizeof(BITMAPINFOHEADER)+
m_nPaletteEntries*sizeof(RGBQUAD)];
if(?m_Palette.GetSafeHandle()?!=?NULL?)
m_Palette.Deleteobject();
if(?m_nPaletteEntries?!=?0?)
{??????
LOGPALETTE?*pLogPal?=?(LOGPALETTE?*)?new?char
[sizeof(LOGPALETTE)+
m_nPaletteEntries*sizeof(PALETTEENTRY)];
if(?pLogPal?!=?NULL?)
{
pLogPal->palVersion?=?0x300;
pLogPal->palNumEntries?=?m_nPaletteEntries;
for(?int?i=0;?i {
pLogPal->palPalEntry[i].peRed?=
m_pPalette[i].rgbRed;
pLogPal->palPalEntry[i].peGreen?=
m_pPalette[i].rgbGreen;
pLogPal->palPalEntry[i].peBlue?=
m_pPalette[i].rgbBlue;
}
m_Palette.CreatePalette(?pLogPal?);
delete?[]?pLogPal;
}
}
m_BitCount?=?24;?????????????//24位位圖
p?=?m_pDibBits;??????????????//指向位圖數據的指針,用來執行處理操作用
bitmap_size?=?m_dwDibSize?-?(m_pDibBits?-?m_pDib);//真正的位圖數據的大小(即除頭結構外)
tag?=?BFH.bfReserved1;
return(?TRUE?);
}
BOOL?CBMPHider::Save(?const?char?*pszFilename?)?//保存含有隱藏信息的bmp
{
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8370??2006-02-17?21:03??DataHideInBMP\BMPHider.cpp
?????文件???????1440??2006-02-17?21:03??DataHideInBMP\BMPHider.h
?????文件??????29384??2010-06-02?15:45??DataHideInBMP\DataHideInBMP.aps
?????文件???????2175??2010-06-02?15:45??DataHideInBMP\DataHideInBMP.clw
?????文件???????4335??2006-02-17?18:45??DataHideInBMP\DataHideInBMP.cpp
?????文件???????4830??2006-02-17?21:06??DataHideInBMP\DataHideInBMP.dsp
?????文件????????551??2006-02-17?21:06??DataHideInBMP\DataHideInBMP.dsw
?????文件???????1433??2006-02-17?18:45??DataHideInBMP\DataHideInBMP.h
?????文件?????140288??2010-06-02?15:45??DataHideInBMP\DataHideInBMP.ncb
?????文件????????260??2010-06-02?15:45??DataHideInBMP\DataHideInBMP.plg
?????文件??????11193??2006-02-17?19:02??DataHideInBMP\DataHideInBMP.rc
?????文件???????1882??2006-02-17?18:45??DataHideInBMP\DataHideInBMPDoc.cpp
?????文件???????1552??2006-02-17?18:45??DataHideInBMP\DataHideInBMPDoc.h
?????文件???????6719??2006-02-17?18:58??DataHideInBMP\DataHideInBMPView.cpp
?????文件???????2259??2006-02-17?21:03??DataHideInBMP\DataHideInBMPView.h
?????文件???????2514??2006-02-17?18:45??DataHideInBMP\MainFrm.cpp
?????文件???????1581??2006-02-17?18:45??DataHideInBMP\MainFrm.h
?????文件???????4479??2006-02-17?18:45??DataHideInBMP\ReadMe.txt
?????文件????????788??2006-02-17?18:58??DataHideInBMP\resource.h
?????文件????????215??2006-02-17?18:45??DataHideInBMP\StdAfx.cpp
?????文件???????1054??2006-02-17?18:45??DataHideInBMP\StdAfx.h
?????文件?????360054??2006-02-18?10:29??DataHideInBMP\Debug\Bliss.bmp
?????文件?????131222??2010-05-26?15:18??DataHideInBMP\Debug\DataHideInBMP.exe
?????文件???????7164??2010-05-26?15:18??DataHideInBMP\Debug\DataHideInBMP.res
?????文件?????254976??2010-06-02?15:45??DataHideInBMP\Debug\vc60.idb
?????文件????5510512??2010-05-26?15:18??DataHideInBMP\Debug\DataHideInBMP.pch
?????文件?????454656??2010-05-26?15:18??DataHideInBMP\Debug\vc60.pdb
?????文件?????106341??2010-05-26?15:18??DataHideInBMP\Debug\StdAfx.obj
?????文件??????20643??2010-05-26?15:18??DataHideInBMP\Debug\MainFrm.obj
?????文件??????46267??2010-05-26?15:18??DataHideInBMP\Debug\DataHideInBMPView.obj
............此處省略18個文件信息
評論
共有 條評論