Python和MATLAB混合编程实现LSB算法JPEG信息PDF文件信息隐藏隐写

资源下载地址:https://download.csdn.net/download/sheziqiong/88631591
资源下载地址:https://download.csdn.net/download/sheziqiong/88631591
选题背景:

在当今的信息时代,信息的安全传输和存储显得尤为重要。其中,隐写技术作为一种隐蔽的信息隐藏方法,可以将机密信息嵌入到普通的载体信号中,如图像、音频、视频等,从而实现在不被察觉的情况下进行信息传输。在图像隐写技术中,最低有效位(LSB)算法是一种常用的方法,它通过对图像像素的最低有效位进行修改,实现信息的隐藏和提取。同时,随着计算机技术的不断发展,Python和MATLAB成为了科学计算和数据分析领域最常用的编程语言。因此,将Python和MATLAB结合起来,实现LSB算法在JPEG图像和PDF文件中的信息隐藏和提取,具有重要的现实意义和应用价值。

意义:

对于信息安全领域而言,基于Python和MATLAB混合编程实现LSB算法JPEG信息PDF文件信息隐藏隐写的意义主要体现在以下几个方面:

实现跨平台的信息隐藏:利用Python和MATLAB的优点,可以将LSB算法实现为可执行文件或脚本文件,实现在多个操作系统平台(如Windows、Linux、MacOS等)上的信息隐藏和提取。这可以大大拓宽LSB算法的应用范围,提高其灵活性和实用性。
提高信息隐藏的效率和准确性:Python和MATLAB都是高性能的编程语言,它们提供了丰富的数学运算库和数据处理函数,可以实现高效的信息隐藏和提取过程。同时,利用Python和MATLAB的图像处理和数据分析工具箱,可以实现对图像和PDF文件的精确操作,提高信息隐藏的准确性和鲁棒性。
促进隐写技术的发展:Python和MATLAB都是科学计算领域广泛使用的编程语言,将它们结合起来实现LSB算法的信息隐藏和提取,可以为隐写技术的发展提供新的思路和方法。同时,该研究还可以促进不同学科领域的交叉融合,推动相关领域的技术创新和发展。
增强信息的安全性:通过将机密信息隐藏在普通的JPEG图像和PDF文件中,可以实现对信息的保护和保密。即使攻击者截获了隐藏有信息的图像或文件,也很难发现其中隐藏的信息。这将大大增强信息的安全性,保障信息安全传输和存储的安全性和可靠性。

Steganography

空域编码图像

  • 空域编码是指在图像空间域进行编码,也就是直接针对图像像素进行编码
  • 对像素进行编码,如LSB算法,主要有下面两种方式
    • 光栅格式
    • 调色板格式 GIF(graphics interchange format)
  • 一个图像编码标准往往包括多类编码方法,一个图像仅仅是其一类方法的实例。例如,常见的BMP(Bitmap)、 TIFF(
    Tagged Image File Format)、 PNG(Portable Network
    Graphics)均支持光栅格式与调色板格式编码,对这两种格式
    编码分别又支持多种具体编码方法

LSB隐写算法

  • LSB隐写是最基础、最简单的隐写方法,具有容量大、嵌入速度快、对载体图像质量影响小的特点

  • LSB的大意就是最低比特位隐写。我们将深度为8的BMP图像,分为8个二值平面(位平面),我们将待嵌入的信息(info)直接写到最低的位平面上。换句话说,如果秘密信息与最低比特位相同,则不改动;如果秘密信息与最低比特位不同,则使用秘密信息值代替最低比特位

代码实现

Image text
嵌入信息前的载体图片

Image text
嵌入信息后的载体图片

变换域编码图像

JPEG

  • Joint Photographic Experts Group(联合图像专家小组)的缩写
  • JPEG编码
    在这里插入图片描述

JSteg隐写

  • JSteg的算法的主要思想是将秘密消息嵌入在量化后的DCT系数的最低比特位上,但对原始值为0、+1、-1的DCT系数不进行嵌入,提取秘密消息时,只需将载密图像中不等于0、l的量化DCT系数的LSB取出即可
  • JSteg算法步骤
  1. 选择载体图像,并且将载体图像划分为连续的8×8的子块。
  2. 对每个子块使用离散余弦变换之后,用相应的质量因数的量化表量化,得到对应的8×8量化DCT子块。
  3. 将需要隐藏的信息编码为二进制数据流,对DCT子块系数进行Z字形扫描,并且使用秘密信息的二进制流替换非0和非1的DCT系数的最低比特位。
  4. 进行熵编码等,产生JPEG隐密图像。
  • JSteg的具体嵌入过程
  1. 部分解码JPEG图像,得到二进制存储的AC系数,判断该AC系数是否等于正负1或0,若等于则跳过该AC系数,否则,执行下一步
  2. 判断二进制存储的AC系数的LSB是否与要嵌入的秘密信息比特相同,若相同,则不对其进行修改,否则执行下一步
  3. 用秘密信息比特替换二进制存储的AC系数的LSB,将修改后的AC系数重新编码得到隐秘JPEG图像
  • JSteg不使用0、1的原因
  1. DCT系数中“0”的比例最大(一般可达到60%以上,取决于图像质量和压缩因子),压缩编码是利用大量出现连零实现的,如果改变DCT系数中“0”的话,不能很好的实现压缩
  2. DCT系数中的“1”若变成“0”,由于接受端无法区分未使用的“0”和嵌入消息后得到的“0”,从而无法实现秘密信息的提取

代码实现

F3隐写

  • 为了改善大量DCT系数不隐藏信息这一状况,人们提出了F3隐写
  • F3对原始值为+1和-1的DCT系数,进行了利用。F3隐写的规则如下
  1. 每个非0的DCT数据用于隐藏1比特秘密信息,为0的DCT系数不负载秘密信息
  2. 如果秘密信息与DCT的LSB相同,便不作改动;如果不同,将DCT系数的绝对值减小1,符号不变
  3. 当原始值为+1或-1且预嵌入秘密信息为0时,将这个位置归0并视为无效,在下一个DCT系数上重新嵌入
  • 编写代码实现嵌入,并观察DCT系数变化
    代码实现
JPEG的DCT系数
{0: 32939, 1: 15730, 2: 13427, 3: 11523, 4: 9540, 5: 7957, 6: 6607, 7: 5697, 8: 4834, -1: 15294, -2: 13637, -3: 11479, -4: 9683, -5: 7979, -6: 6878, -7: 5631, -8: 4871}
Jsteg begin writing!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
经过信息隐藏后JPEG的DCT系数变化
{0: 32939, 1: 15730, 2: 12552, 3: 12398, 4: 8739, 5: 8758, 6: 6165, 7: 6139, 8: 4487, -1: 15294, -2: 12721, -3: 12395, -4: 8891, -5: 8771, -6: 6319, -7: 6190, -8: 4463}
F3steg begin writing!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
经过信息隐藏后JPEG的DCT系数变化
{0: 47068, 1: 13416, 2: 13519, 3: 10075, 4: 9545, 5: 7077, 6: 6650, 7: 5016, 8: 4754, -1: 13308, -2: 13668, -3: 10124, -4: 9571, -5: 7249, -6: 6591, -7: 5098, -8: 4733}
F4steg begin writing!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
经过信息隐藏后JPEG的DCT系数变化
{0: 59320, 1: 13618, 2: 11987, 3: 9875, 4: 8328, 5: 6860, 6: 5883, 7: 4910, 8: 4239, -1: 13692, -2: 11976, -3: 9976, -4: 8428, -5: 7007, -6: 5834, -7: 4964, -8: 4190}
  • 条形图绘制

Image text

  • 未经过信息隐藏的DCT系数,系数近似符合拉普拉斯分布,具有几个典型特点
    • 对称性 以0为中心达到最大值,两侧分布近似对称
    • 单侧单调性 以0值为中心达到最大值,两侧单调下降
    • 梯度下降性 小值样点较多,大值样点较少,分布曲线在两侧下降梯度逐渐减小
      Image text
  • JSteg隐写的DCT系数
    • JSteg隐写可嵌入信息的DCT系数较少,隐写量较小,且相邻数值样点的个数接近,如2和3,-2和-3形成了值对,卡方特征变化明显,因而提出了F3隐写
      Image text
  • F3隐写的DCT系数
    • F3的设计虽然防止了相邻值出现数量接近的现象,也维持了分布函数的对称性,但使得偶数的分布增加,没有满足单调性
    • 这是因为载体绝对值为1的数值较多,当其被修改为0时,嵌入算法继续嵌入直到找到一个偶数值,或者将一个奇数值改为偶数值,这样绝对值为1的系数可以支持嵌入1,但是不支持嵌入0,需要使用或制造一个偶数
    • 另外,0系数的数量有相应的增加,产生分布曲线向0收缩的现象

F4隐写

  • 为了克服F3的缺陷,F4对不同正负号的奇偶系数采用了不同的嵌入与消息表示方法
  • F4用负偶数、正奇数代表嵌入了消息比特1,用负奇数、正偶数代表嵌入了0
  • 但仍然通过减小绝对值的方法进行修改,如果减小绝对值后系数为0则继续往下嵌入当前比特
  • 代码实现
    Image text
  • F4隐写的DCT系数
    • F4显然保持了载体分布函数的对称性,也保持了载体分布函数的单调性与梯度下降性
    • 但F4依然存在使含密载体分布函数形状向0收缩的现象

F5隐写

  • F5隐写实现了基于汉明码的矩阵编码隐写,在一个分组上最多修改R=1次以嵌入 2 r − 1 − r 2^r-1-r 2r1r比特,采用的基本嵌入方法是基于F4隐写的
  • F5的嵌入步骤
  1. 获得嵌入域。若输入的是位图,则进行JPEG编码得到JPEG系数;若输入的是JPEG图像,则进行熵编码的解码得到JPEG系数

  2. 位置置乱。根据口令生成的密钥位一个伪随机数发生器,基于伪随机数发生器置乱JPEG系数的位置

  3. 编码参数确定。为了提高嵌入效率,一般希望n尽可能大,因此,根据载体中可用系数的数量与消息的长度确定参数r,并计算 n = 2 r − 1 n=2^r-1 n=2r1

  4. 基于( n = 2 r − 1 , r n=2^r-1,r n=2r1,r)的汉明分组码得到编码校验矩阵,开始嵌入消息:①按置乱后的顺序取下面n个非零系数,在其中的LSB序列中按照以上编码嵌入n-r比特的消息;②如果未发生修改,并且还有需要嵌入的消息,则返回①继续嵌入下一分组;③如果进行了修改,则判断是不是有系数值收缩到0,如果没有,并且还有需要嵌入的消息则返回①继续嵌入下一分组,如果有,取出一个新的非零系数组成新的一组n个非零系数,在其中的LSB序列中按照以上编码重新嵌入以上n-r比特的消息,直到没有修改或收缩,最后,如果还有需要嵌入的消息,则返回①继续嵌入下一分组

  5. 位置逆置乱。恢复DCT系数原来的位置顺序

  6. 熵编码。按照JPEG标准无损压缩DCT量化系数,得到JPEG文件

资源下载地址:https://download.csdn.net/download/sheziqiong/88631591
资源下载地址:https://download.csdn.net/download/sheziqiong/88631591

  • 33
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shejizuopin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值