资源简介
该算法实现了以下功能:
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个文件信息
- 上一篇:数字电子技术模拟试题及答案九套经典
- 下一篇:基于labview神经肌肉电刺激设计
相关资源
- 信息隐藏与数字水印实验指导电子教
- 数字水印 好的外文文献
- 阴影图提取算法
- DWT-SVD数字水印
- 鲁棒性数字水印的设计与仿真
- 基于小波变换的数字水印系统设计
- 信息隐藏期末项目和报告
- 数字水印的多种算法实现
- 量化索引抖动调制水印嵌入与提取
- BMP图像的信息隐藏
- 数字水印技术
- 数字水印提取DCT&DWT;的代码加运行文档
- 数字水印的嵌入与检测 WaterMark 1.0
- 基于IWT和HVS的彩色图像数字水印算法
- 信息隐藏与数字水印
- Digital Watermarking and Steganography第二版
- 基于图像的信息隐藏两个算法(LSB和
- 论文研究-基于QR分解的Contourlet域抗几
- 信息隐藏实验报告以及原程序
- LSB算法和量化水印算法对比,DFT、D
- DWT数字水印嵌入与提取代码 毕业设计
- 数字水印必备工具stirmark
- 一个简单的基于数字水印的图像鉴定
- 信息隐藏技术—隐写术与数字水印北
- NEC算法数字水印_源代码
- 信息隐藏标准测试图片库
- Arnold变换 Logistic映射进行图像加密处
- 数字水印 经典代码
- 基于置乱加密的小波域数字图像水印
- BMP图像中的LSB信息隐藏方法
评论
共有 条评论