资源简介
基于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个文件信息
相关资源
- 信息隐藏技术实验教程 PDF
- 信息隐藏与数字水印
- 信息隐藏隐写与分析
- 基于图像的信息隐藏两个算法(LSB和
- 信息隐藏实验报告以及原程序
- 信息隐藏技术—隐写术与数字水印北
- 信息隐藏标准测试图片库
- 可逆信息隐藏
- BMP图像中的LSB信息隐藏方法
- 信息隐藏技术_PDF格式剖析及信息隐藏
- 信息隐藏与数字水印实验教程
- 信息隐藏研究与发展综述
- 信息隐藏代码
- 基于DCT变换信息隐藏图片嵌入水印课
- 一种基于LSB图像信息隐藏的改进算法
- 信息隐藏复习参考题
- RS隐写分析算法 信息隐藏与数字水印
- LSB算法实现信息隐藏
- 武汉大学信息隐藏考试资料
- WAV音频的LSB信息隐藏
- 信息隐藏报告.rar
- 基于同态公钥加密系统的图像可逆信
- 信息隐藏源代码和数字水印介绍
- 信息隐藏F5算法源代码
- 大容量的信息隐藏算法
- LSB信息隐藏源程序
- F5隐藏算法程序
- 信息隐藏 二值图像的隐藏 MD5
- 信息隐藏技术与应用武汉大学出版社
- 基于DCT的信息隐藏实验
评论
共有 条评论