信息安全实验报告五分析_第1页
信息安全实验报告五分析_第2页
信息安全实验报告五分析_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验成绩信息安全概论实验报告实验五数字水印实验专业班级 计科F1301学号201316010508姓名 司如言 完成时间_2016/5/24一、实验目的理解数字水印的实现原理;通过演示程序加深对数字水印的理解, 并完成水印嵌入和检测 的代码编写。二、实验内容用演示软件实现在一幅图像中嵌入水印信息,对比嵌入水印前后的图像有无明显变化;用演示软件实现对一幅给定图像进行是否嵌入水印的检测;编写数字水印程序,分别实现水印的嵌入与检测。三、实验环境和开发工具1. Win dows 7操作系统2. AssureMark v2.0 版3. VC+ 6.0四、实验步骤和结果1. 数字水印程序演示用Assure

2、Mark软件实现嵌入水印信息,并对水印信息进行检测。2、数字水印程序编写参考给定DLL中关于水印嵌入、提取函数的说明,编写代码分别实现水印的嵌入与检测(1)调用DLL中的ADDWATERM 丿(2)调用DLL中的_GETWATERMAR数,实现水印检测。3、数字水印演示步骤Step 1:在AssureMark程序主界面的“模式选择”域中选择“嵌入水印”,然后单击“打 开”按钮,选择要嵌入水印信息的原始图像;单击“保存”按钮。具体操作如下图示:图3.1嵌入水印信息设置Step 2:关闭显示“水印信息嵌入成功”的提示窗口,嵌入水印信息前后的图像对比如图 3.2所示,可以看出两者在视觉上并无明显差异

3、。图3.2嵌入水印信息前后的图像对比Step 3 :在程序主界面的“模式选择”域中选择“检测水印”,然后单击“打开”按钮, 选择要检测是否嵌入水印信息的原始图像。“提取的水印信息”栏中显示提取到的水印信息“信 息安全ISCC”,如下图所示:水印信息提取成功4、将编写好的源代码输入计算机并进行调试分析,发现错误,再修改完善,最终实现实 验所要求的功能。1)给图像添加水印的函数void CPrj_watermarkDlg:O nBtnl mbed() 打开并读取未嵌入水印的源BMP文件CFile dibFile(m_strFilelmgSrc, CFile:modeRead);DWORD n JP

4、G_Le n = 0;n JPG_Len = (DWORD)dibFile.GetLe ngth();dibFile.Read(pJPG_Buf, nJPG_Le n);/调用DLL中的_ADDWATERMA函数,实现水印嵌入int ret1;memset(WmCoef, 0, sizeof(WmCoef);ret1 = _ADDWATERMARK(pJPG_Buf, nJPG_Len, pBMP_Buf, WmCoef);if(ret1 = 1) /水印嵌入成功,分别用文件保存嵌入水印后的图片和源DCT系数,以备水印检测使用AfxMessageBox(" 水印嵌入成功 "

5、);CFile dibFile2(m_strFileImgWater, CFile:modeCreate|CFile:modeWrite); dibFile2.Write(pBMP_Buf, nJPG_Len);dibFile2.Close();CFile fCoef("CoefDCT.dat", CFile:modeCreate|CFile:modeWrite); fCoef.Write(WmCoef, strlen(char*)WmCoef);fCoef.Close();else if(ret1 = 0)AfxMessageBox(" 水印嵌入失败 "

6、;);dibFile.Close();2) 从图像中提取水印的函数核心实现/ WaterMarkDlg.cpp : implementation file#include "stdafx.h"#include "WaterMark.h"#include "WaterMarkDlg.h"#include "Dib.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;BOOL CWaterMarkDlg:O

7、nInitDialog()CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty() pSysMenu->AppendMenu(MF_SEPARAT

8、OR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);SetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CWaterMarkDlg:OnOpenFile()/ TODO: Add your cont

9、rol notification handler code here CFileDialog dlg(TRUE, "", NULL,OFN_HIDEREADON| LOYFN_OVERWRITEPRO| MOPFTN_ALLOWMULTISELECT, "(*.bmp)|*.bmp| 所有文件 (*.*)|*.*|",AfxGetMainWnd();/ 读取图象的文件名 CString filename; if(dlg.DoModal()=IDOK) /Bitmap2Data() 将图象的转换为数据保存在二维数组 m_tOriPixelArray POS

10、ITION pos = dlg.GetStartPosition(); filename = dlg.GetNextPathName(pos);Bitmap2Data(); if(hwnd0!=NULL) hwnd0=NULL;if(hSrcDC0!=NULL) hSrcDC0=NULL;if(hDesDC0!=NULL) hDesDC0=NULL;hwnd0 = GetDlgItem(IDC_STATIC0); hDesDC0 = hwnd0->GetDC()->m_hDC; hSrcDC0 = CreateCompatibleDC(hDesDC0); filename=dlg.

11、GetPathName(); hBitmap0=(HBITMAP)LoadImage(AfxGetInstanceHandle(),filename,IMAGE_BITMAP ,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);GetObject(hBitmap0, sizeof BITMAP, &bm0); SelectObject(hSrcDC0, hBitmap0); hwnd0->GetClientRect(&rect0); :SetStretchBltMode(hDesDC0,COLORONCOLOR);:StretchBlt(h

12、DesDC0, rect0.left, rect0.top, rect0.right, rect0.bottom, hSrcDC0, 0, 0, bm0.bmWidth, bm0.bmHeight,+SRCCOPY);show0=TRUE;SetTimer(NULL,50,0);GetDlgItem(IDC_BUTTON2)->EnableWindow(TRUE);elseTRACE(" 错误");CString s,s0,s1,s2;s.Format("%2d",bm0.bmHeight);s1.Format("%2d",bm

13、0.bmWidth); s0.Format("%d",m_dib->GetBiBitCount();s2="宿主图象"+sO+"位 HX W:"+s+"X"+s1;if(pEdit!=NULL)pEdit=NULL; r.left=35;r.top=rectO.bottom+2;r.right=2OO+r.left;r.bottom=r.top+2O;pEdit=new CEdit; pEdit->Create(ES_CENTER|WS_VISIBLE|ES_READONLY,r,this,1);CFo

14、nt * cFont=new CFont; cFont->CreateFont(16,O,O,O,FW_SEMIBOLD,FALSE,FALSE,O, ANSI_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH&FF_SWISS,"Arial");pEdit->SetFont(cFont,TRUE);pEdit->SetWindowText(s2); void CWaterMarkDlg:Operate_Byte(BYTE &oper

15、ate1, BYTE&operate2, BYTEm_operate) / 将 m_operate 最低四位取出来放到 L 里最高四位放到 H 里,/最后将H赋值给operatel最后四位L赋值给operate2最后四位int i;BYTE M=24O,t=m_operate;/1111 OOOOBYTE H,L,x8,y4;y3=8;y2=4;y1=2;yO=1;for(i=O;i<8;i+)xi=m_operate&1;m_operate>>=1;H=x7*y3+x6*y2+x5*y1+x4*yO;/hightL=x3*y3+x2*y2+x1*y1+xO*

16、yO;/lowoperate1&=M;operate2&=M;operate1+=H;operate2+=L;void CWaterMarkDlg:PutInWaterMessage()long a,b,c,d;a = ImageHeight;b = ImageWidth;c = WaterHeight;d = WaterWidth;BYTE CWaterMarkDlg:Operate_ByteOut(BYTE operate1, BYTE operate2)/ 相对与 Operate_Byte()int i = 0;BYTE x8,y8,data;for (i=0;i<

17、4;i+) xi=operate2&1;operate2>>=1;/ 取出最低的四位for (i=4;i<8;i+) xi=operate1&1;operate1>>=1;/ 取出最高的四位 y0=1;y1=2;y2=4;y3=8;y4=16;y5=32;y6=64;y7=128;data=x0*y0+x1*y1+x2*y2+x3*y3+x4*y4+x5*y5+x6*y6 +x7*y7;return data; void CWaterMarkDlg:OnOpenW_E_Bitmap()/ TODO: Add your control notific

18、ation handler code hereCFileDialog dlg(TRUE, "", NULL,OFN_HIDEREADON| LOYFN_OVERWRITEPRO| MOPFTN_ALLOWMULTISELECT, "(*.bmp)|*.bmp| 所有文件 (*.*)|*.*|",AfxGetMainWnd();if(dlg.DoModal()!=IDOK)return ;if(hwnd2!=NULL) hwnd2=NULL;if(hSrcDC2!=NULL) hSrcDC2=NULL; if(hDesDC2!=NULL) hDesDC2=

19、NULL;hwnd2 = GetDlgItem(IDC_STATIC2);hDesDC2 = hwnd2->GetDC()->m_hDC;hSrcDC2 = CreateCompatibleDC(hDesDC2);CString file; file=dlg.GetPathName();POSITION pos = dlg.GetStartPositio n();file = dlg.GetNextPathName(pos);Embed2Data( file);hBitmap2=(HBITMAP)Loadlmage(AfxGetl nsta nceHa ndle(),file,IMAGE_BITMAP,0,0 丄 R_LOADF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论