信息安全实验报告五

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1实验成绩《信息安全概论》实验报告实验五数字水印实验专业班级计科F1301学号201316010508姓名司如言完成时间_2016/5/24一、实验目的理解数字水印的实现原理;通过演示程序加深对数字水印的理解,并完成水印嵌入和检测的代码编写。二、实验内容用演示软件实现在一幅图像中嵌入水印信息,对比嵌入水印前后的图像有无明显变化;用演示软件实现对一幅给定图像进行是否嵌入水印的检测;编写数字水印程序,分别实现水印的嵌入与检测。三、实验环境和开发工具1.Windows7操作系统2.AssureMarkv2.0版3.VC++6.0四、实验步骤和结果1.数字水印程序演示用AssureMark软件实现嵌入水印信息,并对水印信息进行检测。2、数字水印程序编写参考给定DLL中关于水印嵌入、提取函数的说明,编写代码分别实现水印的嵌入与检测。(1)调用DLL中的_ADDWATERMARK函数,实现水印嵌入。(2)调用DLL中的_GETWATERMARK函数,实现水印检测。3、数字水印演示步骤Step1:在AssureMark程序主界面的“模式选择”域中选择“嵌入水印”,然后单击“打开”按钮,选择要嵌入水印信息的原始图像;单击“保存”按钮。具体操作如下图示:2图3.1嵌入水印信息设置Step2:关闭显示“水印信息嵌入成功”的提示窗口,嵌入水印信息前后的图像对比如图3.2所示,可以看出两者在视觉上并无明显差异。图3.2嵌入水印信息前后的图像对比Step3:在程序主界面的“模式选择”域中选择“检测水印”,然后单击“打开”按钮,选择要检测是否嵌入水印信息的原始图像。“提取的水印信息”栏中显示提取到的水印信息“信息安全ISCC”,如下图所示:水印信息提取成功4、将编写好的源代码输入计算机并进行调试分析,发现错误,再修改完善,最终实现实验所要求的功能。1)给图像添加水印的函数voidCPrj_watermarkDlg::OnBtnImbed(){//打开并读取未嵌入水印的源BMP文件CFiledibFile(m_strFileImgSrc,CFile::modeRead);DWORDnJPG_Len=0;nJPG_Len=(DWORD)dibFile.GetLength();dibFile.Read(pJPG_Buf,nJPG_Len);//调用DLL中的_ADDWATERMARK函数,实现水印嵌入intret1;memset(WmCoef,0,sizeof(WmCoef));3ret1=_ADDWATERMARK(pJPG_Buf,nJPG_Len,pBMP_Buf,WmCoef);if(ret1==1)//水印嵌入成功,分别用文件保存嵌入水印后的图片和源DCT系数,以备水印检测使用{AfxMessageBox(水印嵌入成功);CFiledibFile2(m_strFileImgWater,CFile::modeCreate|CFile::modeWrite);dibFile2.Write(pBMP_Buf,nJPG_Len);dibFile2.Close();CFilefCoef(CoefDCT.dat,CFile::modeCreate|CFile::modeWrite);fCoef.Write(WmCoef,strlen((char*)WmCoef));fCoef.Close();}elseif(ret1==0){AfxMessageBox(水印嵌入失败);}dibFile.Close();}2)从图像中提取水印的函数核心实现//WaterMarkDlg.cpp:implementationfile#includestdafx.h#includeWaterMark.h#includeWaterMarkDlg.h#includeDib.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;……BOOLCWaterMarkDlg::OnInitDialog(){CDialog::OnInitDialog();ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if(!strAboutMenu.IsEmpty())4{pSysMenu-AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}SetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m_hIcon,FALSE);//Setsmallicon//TODO:AddextrainitializationherereturnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCWaterMarkDlg::OnOpenFile(){//TODO:AddyourcontrolnotificationhandlercodehereCFileDialogdlg(TRUE,,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,(*.bmp)|*.bmp|所有文件(*.*)|*.*||,AfxGetMainWnd());//读取图象的文件名CStringfilename;if(dlg.DoModal()==IDOK){//Bitmap2Data()将图象的转换为数据保存在二维数组m_tOriPixelArrayPOSITIONpos=dlg.GetStartPosition();filename=dlg.GetNextPathName(pos);Bitmap2Data();if(hwnd[0]!=NULL)hwnd[0]=NULL;if(hSrcDC[0]!=NULL)hSrcDC[0]=NULL;if(hDesDC[0]!=NULL)hDesDC[0]=NULL;hwnd[0]=GetDlgItem(IDC_STATIC0);hDesDC[0]=hwnd[0]-GetDC()-m_hDC;hSrcDC[0]=CreateCompatibleDC(hDesDC[0]);filename=dlg.GetPathName();hBitmap[0]=(HBITMAP)LoadImage(AfxGetInstanceHandle(),filename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);GetObject(hBitmap[0],sizeofBITMAP,&bm[0]);SelectObject(hSrcDC[0],hBitmap[0]);hwnd[0]-GetClientRect(&rect[0]);::SetStretchBltMode(hDesDC[0],COLORONCOLOR);::StretchBlt(hDesDC[0],rect[0].left,rect[0].top,rect[0].right,5rect[0].bottom,hSrcDC[0],0,0,bm[0].bmWidth,bm[0].bmHeight,+SRCCOPY);show[0]=TRUE;SetTimer(NULL,50,0);GetDlgItem(IDC_BUTTON2)-EnableWindow(TRUE);}else{TRACE(错误);}CStrings,s0,s1,s2;s.Format(%2d,bm[0].bmHeight);s1.Format(%2d,bm[0].bmWidth);s0.Format(%d,m_dib-GetBiBitCount());s2=宿主图象+s0+位H×W:+s+X+s1;if(pEdit!=NULL)pEdit=NULL;r.left=35;r.top=rect[0].bottom+2;r.right=200+r.left;r.bottom=r.top+20;pEdit=newCEdit;pEdit-Create(ES_CENTER|WS_VISIBLE|ES_READONLY,r,this,1);CFont*cFont=newCFont;cFont-CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,Arial);pEdit-SetFont(cFont,TRUE);pEdit-SetWindowText(s2);}……voidCWaterMarkDlg::Operate_Byte(BYTE&operate1,BYTE&operate2,BYTEm_operate){//将m_operate最低四位取出来放到L里最高四位放到H里,//最后将H赋值给operate1最后四位L赋值给operate2最后四位inti;BYTEM=240,t=m_operate;//11110000BYTEH,L,x[8],y[4];y[3]=8;y[2]=4;y[1]=2;y[0]=1;for(i=0;i8;i++){x[i]=m_operate&1;m_operate=1;}H=x[7]*y[3]+x[6]*y[2]+x[5]*y[1]+x[4]*y[0];//hightL=x[3]*y[3]+x[2]*y[2]+x[1]*y[1]+x[0]*y[0];//lowoperate1&=M;operate2&=M;operate1+=H;operate2+=L;6}voidCWaterMarkDlg::PutInWaterMessage(){longa,b,c,d;a=ImageHeight;b=ImageWidth;c=WaterHeight;d=WaterWidth;}BYTECWaterMarkDlg::Operate_ByteOut(BYTEoperate1,BYTEoperate2){//相对与Operate_Byte()inti=0;BYTEx[8],y[8],data;for(i=0;i4;i++){x[i]=operate2&1;operate2=1;//取出最低的四位}for(i=4;i8;i++){x[i]=operate1&1;operate1=1;//取出最高的四位}y[0]=1;y[1]=2;y[2]=4;y[3]=8;y[4]=16;y[5]=32;y[6]=64;y[7]=128;data=x[0]*y[0]+x[1]*y[1]+x[2]*y[2]+x[3]*y[3]+x[4]*y[4]+x[5]*y[5]+x[6]*y[6]+x[7]*y[7];returndata;}……voidCWaterMarkDlg::OnOpenW_E_Bitmap(){//TODO:AddyourcontrolnotificationhandlercodehereCFileDialogdlg(TRUE,,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,(*.bmp)|*.bmp|所有文件(*.*)|*.*||,AfxGetMainWnd());if(dlg.DoModal()!=IDOK)return;if(hwnd[

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功