资源简介

该算法实现了以下功能: 1.先对灰度级的水印图像进行取每位高四位的二进制化处理,得到长度为原来四倍的二进制水印数据; 2.产生一个随机二进制序列,即密钥,长度与二进制水印数据长度相同; 3.利用此二进制序列对水印图像进行混沌加密; 4.根据二进制水印的对应位,修改图像的最低位,以保证其奇偶性; 5.根据要检测图像中每个像素的最低位的奇偶性提取水印信息; 6.根据密钥对水印图像进行还原。

资源截图

代码片段和文件信息

// Dib.cpp: implementation of the CDib class.
//
//////////////////////////////////////////////////////////////////////

#include “StdAfx.h“
#include “Dib.h“

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDib::CDib()
{
m_hDrawDib=NULL;
m_pDib=NULL;
}
CDib::~CDib()
{
Close();
}

void CDib::Draw(CDC *pDCint nWidth int nHeight)
{
if(m_pDib!=NULL)
{
ASSERT(IsValid());
DrawDibRealize(m_hDrawDibpDC->GetSafeHdc()TRUE);
DrawDibDraw(m_hDrawDibpDC->GetSafeHdc()
0  //desktop left
0  //desktop top
nWidth
nHeight
(BITMAPINFOHEADER *)m_pDib
(LPVOID) GetBits()
0  //source left
0  //source top
((BITMAPINFOHEADER *)m_pDib)->biWidth
((BITMAPINFOHEADER *)m_pDib)->biHeight
DDF_BACKGROUNDPAL);
}
}

CSize CDib::GetSize()
{
return CSize(((BITMAPINFOHEADER *)m_pDib)->biWidth
 ((BITMAPINFOHEADER *)m_pDib)->biHeight);
}

LONG CDib::GetWidth()
{
return ((BITMAPINFOHEADER *)m_pDib)->biWidth;
}

LONG CDib::GetHeight()
{
return ((BITMAPINFOHEADER *)m_pDib)->biHeight;
}

void CDib::Close()
{
if(m_hDrawDib!=NULL)
{
DrawDibClose(m_hDrawDib);
m_hDrawDib=NULL;
}

if(m_pDib!=NULL)
{
delete m_pDib;
m_pDib=NULL;
}
}

BOOL CDib::Open(const char * pzFileName)
{
// BITMAPFILEHEADER bmpFileHeader;
CFile file;
int nBmpFileHeaderSize;

Close();

//drawdibopen initialize the diradib library and 
//returns a handle for all drawdib operations
if(!(m_hDrawDib=DrawDibOpen()))
goto exit;

  //open and read the DIB file header
nBmpFileHeaderSize=sizeof(BITMAPFILEHEADER);

if(!file.Open(pzFileNameCFile::modeRead | CFile::typeBinary))
goto exit;

if(file.Read((void *)&bmpFileHeadernBmpFileHeaderSize)!=(UINT)nBmpFileHeaderSize)
goto failure;

//validate the DIB file header by checking the first
//two characters for the signature “BM“
if(bmpFileHeader.bfType!=*((WORD *)“BM“))
goto failure;

//allocate a big chuck of global memory to store the DIB
m_pDib=(BYTE *)new char [bmpFileHeader.bfSize-nBmpFileHeaderSize];

//allocate memory fail
if(!m_pDib)
goto failure;

//read the dib into the buffer at a time using ReadHuge
file.ReadHuge(m_pDibbmpFileHeader.bfSize-nBmpFileHeaderSize);

if(((BITMAPINFOHEADER *)m_pDib)->biSizeImage==0)
{
//the application that create this bitmap didn‘t fill
//in the biSizeImage field. Let‘s fill it
//in even though the DrawDib * functions don‘t need it.
BITMAPINFOHEADER *pDib=(BITMAPINFOHEADER *)m_pDib;

//scan lines must be DWord aligned hence the strange bit stuff
pDib->biSizeImage=((((pDib->biWidth*pDib->biBitCount)+31)&~31)>>3)*pDib->biHeight;
}

m_pDibBits=GetBits();

file.Close();
return 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4425  2009-04-05 16:47  基于混沌序列的LSB水印算法\Dib.cpp

     文件     196662  2009-04-07 20:08  基于混沌序列的LSB水印算法\m1.bmp

     文件      21624  2009-08-31 21:34  基于混沌序列的LSB水印算法\NewReadBmp.aps

     文件       1320  2009-10-27 19:51  基于混沌序列的LSB水印算法\NewReadBmp.clw

     文件       2119  2009-04-06 14:56  基于混沌序列的LSB水印算法\NewReadBmp.cpp

     文件       4350  2009-08-19 22:05  基于混沌序列的LSB水印算法\NewReadBmp.dsp

     文件        528  2009-07-11 13:48  基于混沌序列的LSB水印算法\NewReadBmp.dsw

     文件       1368  2009-04-06 14:56  基于混沌序列的LSB水印算法\NewReadBmp.h

     文件     148480  2009-10-27 19:51  基于混沌序列的LSB水印算法\NewReadBmp.ncb

     文件        967  2009-08-19 21:29  基于混沌序列的LSB水印算法\dib.h

     文件       1009  2009-08-19 21:23  基于混沌序列的LSB水印算法\resource.h

     文件       2756  2009-10-27 19:51  基于混沌序列的LSB水印算法\NewReadBmp.plg

     文件       5906  2009-08-19 22:03  基于混沌序列的LSB水印算法\NewReadBmp.rc

     文件      50688  2009-10-27 19:51  基于混沌序列的LSB水印算法\NewReadBmp.opt

     文件       2892  2009-08-20 12:43  基于混沌序列的LSB水印算法\NewReadBmpDlg.h

     文件       3651  2009-04-06 14:56  基于混沌序列的LSB水印算法\ReadMe.txt

     文件        212  2009-04-06 14:56  基于混沌序列的LSB水印算法\StdAfx.cpp

     文件       1054  2009-04-06 14:56  基于混沌序列的LSB水印算法\StdAfx.h

    ..A.SH.      5632  2009-05-06 20:22  基于混沌序列的LSB水印算法\Thumbs.db

     文件       1078  2009-04-06 14:56  基于混沌序列的LSB水印算法\res\NewReadBmp.ico

     文件        402  2009-04-06 14:56  基于混沌序列的LSB水印算法\res\NewReadBmp.rc2

     文件      65590  2009-08-19 11:25  基于混沌序列的LSB水印算法\pic\watermark\jldx_128.bmp

     文件     129846  2009-04-08 21:31  基于混沌序列的LSB水印算法\pic\watermark\jldx.bmp

     文件      35625  2009-09-14 12:31  基于混沌序列的LSB水印算法\pic\watermark\原始水印图像的数据显示.txt

     文件     142476  2009-09-14 12:31  基于混沌序列的LSB水印算法\pic\watermark\原二值化水印图像的数据显示.txt

     文件      30054  2009-08-19 19:38  基于混沌序列的LSB水印算法\pic\watermark\2816ee8cc2b14546accd5_ss.bmp

     文件      30054  2009-08-19 19:39  基于混沌序列的LSB水印算法\pic\watermark\小孩.bmp

     文件      35398  2009-08-19 19:40  基于混沌序列的LSB水印算法\pic\watermark\印章.bmp

     文件      10006  2009-08-19 19:44  基于混沌序列的LSB水印算法\pic\watermark\大众.bmp

     文件      31162  2009-08-19 19:44  基于混沌序列的LSB水印算法\pic\watermark\东风.bmp

............此处省略47个文件信息

评论

共有 条评论