合肥工业大学信息隐藏实验报告

news2024/11/19 2:36:46

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆
🔥系列专栏 :信息隐藏实验报告
📃新人博主 :欢迎点赞收藏关注,会回访!
💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑得累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷。


2021~2022学年第 2 学期

实验一 空域图像 LSBR

  1. 实验目的

理解并掌握空域图像最低有效位替换(LSBR)隐写算法

  1. 实验原理

1.位平面 **
以灰度图像为例,采用无符号 8 位整型(unit8)数组存储,图像像素的 8 位由低至高组成了 8 个位平面,第一个位平面由每个像素的最低位组成,第八个位平面由每个像素的最高位组成。如下图:

图表 1 图像的位平面
所组成的 8 个位平面在图像中所代表的重要程度是不同的,如下图所示:

从上图可以看出,将嵌入信息嵌入到图像像素的最低位,对整个图像没有明显的影响,从而达到信息隐藏的目的。图像像素的最低位一般称为LSB(Least Significant Bits)。
2.LSBR描述
** LSB 算法的核心是将选取像素点的最不重要位依次替换成秘密信息,嵌入秘密信息过程包括选择图像载体的一个像素点子集{C1,C2……CL(m)},(L(m)为秘密信息的二进制序列长度),然后在子集上执行替换操作:LSB(Ci) <- mi,即把像素 Ci的最不重要位替换成秘密信息 mi,mi为秘密信息的比特位,可以是 1 或 0。LSB 算法中,也可以替换载体图像像素点的多个比特(如最低两个比特)来嵌入秘密信息,以增加信息的嵌入量。秘密信息提取,找出嵌入信息的像素点子集,将这些像素点 的 LSB 提取出来,恢复出秘密信息。算法描述如下:
嵌入过程: 根据载体图像大小及秘密信息的二进制序列长度,选择像素{C1,C2……CL(m)}
for i=1:L(m)
LSB(Ci) <- mi
提取过程:
for i=1: L(m)
mi <-LSB(Ci)
像素点的选择方法有两种:顺序选择和随机选择
3.Stego 的峰值信噪比(PSNR)
** 峰值信噪比
(英语:Peak signal-to-noise ratio,常缩写为
PSNR**)是一个表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值的工程术语。由于许多信号都有非常宽的动态范围,峰值信噪比常用对数分贝单位来表示。
_ _


4.卡方分析法
** **灰度直方图是关于图像灰度级分布的函数,它将数字图像中的所有像素,按照灰度值的大小,统计其出现的次数,即图像中具有某种灰度级的像素的个数。在原始图像(灰度值为0-255)中,相邻灰度值的像素块数目一般差别很大。但在LSB信息隐藏中,秘密信息在嵌入之前往往经过加密,可以看作是0、1随机分布的比特流,而且值为0与1的可能性都是1/2。如果秘密信息完全替代载体图像的最低位,那么伪装对象相邻灰度值的像素块数目将会比较接近,所以可以根据这个性质判断图像是否经过隐写。在这种情况下,可以将相邻的灰度值两两分组(灰度值一奇一偶),因为嵌入信息总是嵌入载体图像的最低比特位,其像素值要么不变,要么出现由奇数到相邻偶数(减一)、或由偶数到相邻奇数(加一)的改变,这种改变会改变直方图的分布(由差别很大变得近似相等),但是却不会改变这组整体的像素块数目之和。此外,卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。



  • 嵌入算法:

    输入:Cover(*bmp 格式,灰度或彩色图像)
    Secret-in(文本或二值图像)
    Key(嵌入密钥,随机嵌入)
    输出:Stego

  • 提取算法:

    输入:Stego
    Key(提取密钥,随机嵌入)
    输出:Secret-out

  1. 实验任务
  2. 采用 LSBR,实现 secret 的嵌入和提取,两种嵌入方式(顺序嵌入和随机嵌入),选择其中一种实现

如图:载体选用一张X.bmp 图像,分别使用俩种嵌入算法对secret1.txt中的内容进行嵌入。
在这里插入图片描述

图表 2 两种嵌入的嵌入和提取结果

图表 3 10%嵌入率的Cover和Stego

  1. 自定义两种嵌入率(一种低嵌入率,0.1bpp 或以下,一种高嵌入率 0.8bpp或以上),计算 Stego 的 PSNR

如图,分别计算出0.1bpp和0.8bpp的峰值信噪比:

图表 4 相应嵌入率下的Stego和PSNR

  1. 在任务 2 的基础上,针对两种嵌入率,绘制 Stego 和 Cover 的统计直方图,采用卡方分析法计算 Stego 的隐写概率 P

针对俩种嵌入率的统计直方图如图所示:

图表 5 10%嵌入率的Cover和Stego 统计直方图

图表 6 81%嵌入率的Cover和Stego 统计直方图
针对俩种嵌入率的卡方分析和隐写概率如图所示:

图表 7 第一行为10%嵌入率下的隐写概率,第二行为81%嵌入下的隐写概率

  1. 实验总结

1.嵌入的信息量超过了图像最低位的最大信息量,导致嵌入失败,只需编写一个判断函数,判断嵌入信息的二进制序列位数和图像最低有效位的位数。
2.嵌入信息时,将txt文本信息采用函数转换成二进制序列,‘ubit1’代表一位一位的无符号数,提取时采用 ,‘bit1’代表一位一位的有符号数,导致提取失败出现空白字符或者乱码,只需将俩个参数调一致即可。
3.为了更直观的展现图像的嵌入率和嵌入位置,编写比较函数,将Cover 和 Stego 的相应位置的像素值作差,得到一张图片,详情见图表4。
4. 通过卡方分布计算隐写概率时,可以调用标准库函数

  1. 思考题

1.分析嵌入率与 PSNR 之间的关系。
通过实验观察可以得出,随着嵌入率(bpp)的增加,PSNR的值逐渐降低。

图表 8 PSNR和嵌入率(bpp)的关系曲线
2.分析嵌入率与隐写概率P之间的关系。
通过实验数据可以得出,随着嵌入率(bpp)的增加,隐写概率P也在不断增加。

图表 9 隐写概率P和嵌入率(bpp)的关系曲线
实验二 数字水印—DCT 交换系数

  1. 实验目的

理解并掌握变换域数字水印算法的基本原理

  1. 实验原理

1. 离散余弦变换
离散余弦变换(DCT)是一种实数域变换,其变换核为实数的余弦函数,图像处理运用的是二维离 散余弦变换,对图像进行二维 DCT,可以使得图像的重要可视信息都集中在 DCT 的一小部分系数中,如图:

图表 10 图像的DCT变换
在图像 DCT 系数矩阵中,直流系数和低频系数集中在左上角,高频系数集中在右下角,中间区 域为中频系数。由上图可以看出,直流和低频系数的绝对值比较大,这两部分所含有的原始信号成 分较多,由其反变换重构图像能够得到原始图像的近似部分,而高频系数都非常接近于零,反映的 是原始信号的细节部分。
2. JPEG压缩
JPEG(Joint Photo-graphic Experts Group)是 ISO 的连续色调静止图像的压缩标准,DCT 是 JPEG 有损压缩的核心技术,JPEG 有损压缩步骤如下:
(a)将图像数据进行 88 分块;
(b)对每个子块做离散余弦变换(DCT);
©量化,对子块内的每个 DCT 系数除以预定义的量化值,量化处理的目的是调整图像中不同频 谱成分的影响,尤其是减小高频系数;
(d)对量化后的直流和交流系数分别进行差分和行程编码,最后再进行熵编码。
3.DCT算法描述
DCT 隐藏算法能有效的抵抗 JPEG 压缩,在 zhao&koch 提出的 DCT 隐藏算法中,通过调整图像 块中两个 DCT 系数的相对大小嵌入秘密信息,算法描述如下:
嵌入过程:对载体图像做 8
8 大小的分块 DCT,在 DCT 系数矩阵块中,选择两个系数 a,b
If (嵌入的秘密信息位为1)
make a>b
Else
make a<b
对嵌入秘密信息后的系数矩阵做 88 大小的分块 DCT 反变换
提取过程:对隐蔽载体图像做 8
8 大小的分块 DCT,选取嵌入秘密信息的 DCT 系数矩阵块
If a>b 提取秘密信息位1
Else 提取秘密信息位0

  1. 实验任务

1) 选择载体图像 C 和水印 W,采用 DCT 交换系数法得到含水印图像。 载体格式:bmp(jpeg),灰度 水印形式:文本(学号+姓名+班级)
载体图像C和水印W选用如下图所示:
在这里插入图片描述

图表 11 载体图像和文本水印

图表 12 嵌入强度α为0.1

图表 13 嵌入强度α为0.9
2) 选择两种嵌入强度(如: α 为 0.1 和 0.9),分别计算水印图像的质量 PSNR。
计算过程与实验一相同

图表 14 嵌入强度分别为0.1和0.9时相应的PSNR值
3) 对水印图像进行攻击测试,计算提取水印的错误率。(攻击测试至少包含三种 攻击:Jpeg 压缩,加噪,剪切、缩放、中值或均值滤波等)
中提供了如下函数:

图表 15 经过相应攻击后的图像

图表 16 StirMarkBenchmark_4_0_129攻击下的图像

图表 17 相应攻击下的水印提取率

  1. 实验总结

1.嵌入信息时,将txt文本信息采用函数转换成二进制序列,‘ubit1’代表一位一位的无符号数,提取时采用 ,‘bit1’代表一位一位的有符号数,导致提取失败出现空白字符或者乱码,只需将俩个参数调一致即可。
2.如何计算错误率?采用水印信息无符号数的二进制序列,同被攻击的图像所提取出来的无符号数二进制序列一一异或,计算同与不同。结果除以水印的二进制长度,即可得到错误率或正确率。
3.如何对图像进行攻击?可以采用标准库的各种函数或者StirMarkBenchmark_4_0_129这款软件

  1. 思考题

  2. 分析 α 与 PSNR 之间的关系
    跑如下的脚本即可发现,随着嵌入强度α的不断增加,PSNR值不断减小

    图表 18 嵌入强度α和PSNR的关系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV基础操作(1)图片及视频基础操作、常用绘图函数

OpenCV基础操作(1)图片、视频、绘图函数 import cv2 as cv import numpy as np1、图像的读取、显示、保存 使用函数 cv2.imread() 读入图像。 第一个参数是幅图路径&#xff0c; 第二个参数是要告诉函数应该如何读取这幅图片。 • cv2.IMREAD_COLOR(1)&#xff1a;读入一副彩色…

模板字符串、startsWith()方法和endsWith()方法、repeat()、Set数据结构、Set对象实例方法、遍历Set

模版字符串 ES6新增的创建字符串的方式,使用反引号定义 示例 <script>// 1.模板字符串可以解析变量 ${}显示变量的值let name 张三;let sayHello HEllo,我的名字叫${name};console.log(name);console.log(sayHello);let result {name: "zhangsan",age: 20…

激光切割机在使用过程中常见故障有哪些(一)

由于不少客户在使用光纤激光切割机的过程中&#xff0c;因为操作不当等原因&#xff0c;造成激光切割机出现一些小故障&#xff0c;这些故障虽然不大&#xff0c;但是却会对正常使用工期造成延误&#xff0c;甚至造成损失&#xff0c;所以了解光纤激光切割机的常见故障迫在眉睫…

本地电脑远程服务器,复制大文件报:未指定错误的解决办法

1、本地电脑快捷键WINR 打开运行窗口 2、输入 \\IP地址\磁盘$。如下&#xff1a; 3、上一步点击确定&#xff0c;即远程到了相应的磁盘&#xff0c;可在本地进行复制粘贴。

北京打响大模型地方战第一枪:公布通用人工智能发展21项措施

21项&#xff01;北京就促进AGI创新发展措施征集意见。 作者 | 李水青 来源 | 智东西 ID | zhidxcom 智东西5月16日消息&#xff0c;近日&#xff0c;《北京市促进通用人工智能创新发展的若干措施&#xff08;2023-2025年&#xff09;&#xff08;征求意见稿&#xff09;》…

【C++】基础知识--程序的结构(1)

C简介&#xff1a; C 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言&#xff0c;支持过程化编程、面向对象编程和泛型编程。 C 被认为是一种中级语言&#xff0c;它综合了高级语言和低级语言的特点。 C 是由 Bjarne Stroustrup 于 1979 年在新泽西州…

Codeforces Round 873 (Div. 2) 题解

5.18晚VP&#xff0c;共AC三题&#xff0c;ABC题&#xff0c;感觉难度还是挺大的&#xff0c;做起来一点也不顺手。。。A题秒出&#xff0c;卡在了B题&#xff0c;在B题花费了好多时间&#xff0c;还没有C题做得顺利。。。B题开始想错了&#xff0c;思路不对&#xff0c;但确实…

LeetCode225.用队列实现栈

&#x1f4ad;前言&#xff1a; 建议本题和LeetCode232对比实现 syseptember的个人博客&#xff1a;LeetCode232.栈模拟队列http://t.csdn.cn/HCEDg 题目 思路 ❗注意&#xff1a;本题的逻辑结构是栈&#xff0c;物理结构是队列&#xff0c;我们需要通过2个队列模拟栈的操作。…

Doxygen源码分析:构建过程简介,并生成doxygen自身的C++文档

2023-05-19 11:52:17 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 1. doxygen 版本2. 找出所有的 CMakeLists.txt 和 *.cmake 文件3. cmake 构建目标清单4. 生成 Doxygen 自己的文档 1. doxygen 版本 zzLegion-R7000P% git log …

LabVIEWCompactRIO 开发指南23 Web服务

LabVIEWCompactRIO 开发指南23 Web服务 LabVIEW8.6中引入的LabVIEWWeb服务提供了一种开放的标准方式&#xff0c;可通过Web与VI进行通信。考虑一个部署在分布式系统中的LabVIEW应用程序。LabVIEW提供了网络流等功能来建立通信&#xff0c;但许多开发人员需要一种方式&#xf…

Cy7 NHS ester水溶性七甲川花菁染料标记活性脂477908-53-5

Sulfo-CY7 NHS ester是一种荧光标记试剂&#xff0c;可用于生物分子的荧光标记。它是一种水溶性的N-羟基琥珀酰亚胺酯化合物&#xff0c;具有强烈的荧光信号和高度稳定性。Sulfo-CY7 NHS ester的化学结构为C43H48N3NaO16S2&#xff0c;分子量约为968.98 g/mol。Sulfo-CY7 NHS e…

HTML5 新增的input 类型、新增的表单属性

新增的input 类型 属性值 说明 type"emall" 限制用户输入必须为Emall类型(邮箱) type"url"限制用户输入必须为URL类型(网址)type"dade"限制用户输入必须为日期类型type"time"限制用户输入必须为时间类型type"month"限…

2023年,企业数字化转型的大趋势

数字化转型&#xff08;DX&#xff09;一直是IT界的热门词汇&#xff0c;它会在组织规划中发挥更大的作用。因为完成数字化转型的组织&#xff0c;通常工作效率、生产力都会更高&#xff0c;运营成本也会降低。 一、自动化将为规范性指导提供动力 在过去十年里&#xff0c;数…

Redis数据类型-ZSet

一. 概述 SortedSet又叫zset&#xff0c;它是Redis提供的特殊数据类型&#xff0c;是一种特殊的set类型&#xff0c;继承了set不可重复的特点&#xff0c;并在set基础上为每个值添加一个分数&#xff0c;用来实现值的有序排列。 二. 常用指令 明白它的特点后&#xff0c;接下来…

OpenAI-whisper语音识别模型

1、whisper简介 Whisper是一个通用的语音识别模型。它是在不同音频的大型数据集上训练的&#xff0c;也是一个多任务模型&#xff0c;可以执行多语言语音识别、语音翻译和语言识别。 whisper有五种模型尺寸&#xff0c;提供速度和准确性的平衡&#xff0c;其中English-only模型…

使用 VS Code 快速搭建 ESP-IDF 开发环境 (Windows、Linux、MacOS)

ESP-IDF 是乐鑫官方的物联网开发框架&#xff0c;适用于 ESP32、ESP32-S、ESP32-C 和 ESP32-H 系列 SoC。它基于 C/C 语言提供了一个自给自足的 SDK&#xff0c;方便用户在这些平台上开发通用应用程序&#xff0c;并集成了大量的软件组件&#xff0c;包括 RTOS、外设驱动程序、…

Flutter 桌面开发 | 键盘快捷键功能 - Shortcuts 组件

theme: cyanosis 在桌面端的开发中&#xff0c;键盘快捷键是非常常见而必要的&#xff0c;比如 Ctrl F 搜索&#xff0c; Ctrl C 复制等。Flutter 既然可以开发桌面端应用&#xff0c;那必然要提供自定义快捷键&#xff0c;触发事件的功能支持。这就是本节要介绍的 Shortcuts…

【5.19】三、白盒测试方法—程序插桩法

目录 3.2 程序插桩法 3.2.1 目标代码插桩 3.2.2 源代码插桩 小提示&#xff1a;HeisenBugs 黑盒测试和白盒测试的异同 3.2 程序插桩法 程序插桩法是一种被广泛使用的软件测试技术&#xff0c;由J.C.Huang教授提出。简单来说&#xff0c;程序插桩就是往被测试程序中插入测…

合肥工业大学计算机组成原理课设-系统硬件综合设计

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;信息安全本科生课设-系统硬件综合设计报告 &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#…

Varnish代理服务器

一.Varnish概述 1.Varnish 简介 Varnish是一款高性能且开源的反向代理服务器和HTTP加速器&#xff0c;其采用全新的软件体系机构&#xff0c;和现在的硬件体系紧密配合。与传统的squid相比&#xff0c;Varnish具有高性能、速度快、管理更加方便等优点&#xff0c;目前很多大型…