信息安全实验报告五.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息安全实验报告五

实验成绩 《信息安全概论》实验报告 实验五 数字水印实验 专业班级 计科F1301 学号 201316010508 姓名 司如言 完成时间_2016/5/24 实验目的 理解数字水印的实现原理;通过演示程序加深对数字水印的理解,并完成水印嵌入和检测的代码编写。 实验内容 用演示软件实现在一幅图像中嵌入水印信息,对比嵌入水印前后的图像有无明显变化;用演示软件实现对一幅给定图像进行是否嵌入水印的检测;编写数字水印程序,分别实现水印的嵌入与检测。 实验环境和开发工具 Windows 7 操作系统 AssureMark v2.0版 VC++ 6.0 实验步骤和结果 数字水印程序演示 用AssureMark软件实现嵌入水印信息,并对水印信息进行检测。 2、数字水印程序编写 参考给定DLL中关于水印嵌入、提取函数的说明,编写代码分别实现水印的嵌入与检测。 (1)调用DLL中的_ADDWATERMARK函数,实现水印嵌入。 (2)调用DLL中的_GETWATERMARK函数,实现水印检测。 3、数字水印演示步骤 Step 1:在AssureMark程序主界面的“模式选择”域中选择“嵌入水印”,然后单击“打开”按钮,选择要嵌入水印信息的原始图像;单击“保存”按钮。具体操作如下图示: 图3.1嵌入水印信息设置 Step 2:关闭显示“水印信息嵌入成功”的提示窗口,嵌入水印信息前后的图像对比如图3.2所示,可以看出两者在视觉上并无明显差异。 图3.2 嵌入水印信息前后的图像对比 Step 3:在程序主界面的“模式选择”域中选择“检测水印”,然后单击“打开”按钮,选择要检测是否嵌入水印信息的原始图像。“提取的水印信息”栏中显示提取到的水印信息“信息安全 ISCC”,如下图所示: 水印信息提取成功 4、将源代码调试,发现错误,再修改完善。void CPrj_watermarkDlg::OnBtnImbed() { //打开并读取未嵌入水印的源BMP文件 CFile dibFile(m_strFileImgSrc, CFile::modeRead); DWORD nJPG_Len = 0; nJPG_Len = (DWORD)dibFile.GetLength(); dibFile.Read(pJPG_Buf, nJPG_Len); //调用DLL中的_ADDWATERMARK函数,实现水印嵌入 int ret1; memset(WmCoef, 0, sizeof(WmCoef)); ret1 = _ADDWATERMARK(pJPG_Buf, nJPG_Len, pBMP_Buf, WmCoef); if(ret1 == 1) //水印嵌入成功,分别用文件保存嵌入水印后的图片和源DCT系数,以备水印检测使用 { AfxMessageBox("水印嵌入成功"); 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("水印嵌入失败"); } dibFile.Close(); } 从图像中提取水印的函数核心实现 // WaterMarkDlg.cpp : implementation file #include "stdafx.h" #include "WaterMark.h" #include "WaterMarkDlg.h" #include "Dib.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; …… BOOL CWaterMarkDlg::OnInitDialog() { CDialog::OnInitDialog(); ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMen

文档评论(0)

wuailuo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档