• 大小: 2.05MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-24
  • 语言: 其他
  • 标签: 信息隐藏  

资源简介

基于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 << m_pBIH->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个文件信息

评论

共有 条评论