JPEG图像常用加密算法简介

JPEG图像加密算法

目前,JPEG图像加密算法可以分成异或加密、置乱加密和置乱与异或组合加密。下面对这三种加密方式进行阐述。

(1) 异或加密

文献[1]提出了一种基于异或加密的JPEG图像的RDH-EI方案。该算法通过对AC系数的ACA和图像的量化表进行流密码异或,以改变图像的DCT系数,达到保护图像内容的目的。然而,这种算法没有改变图像块中非零AC系数前的零游程,ACH在加密前后保持不变,原始图像的轮廓结构可以从加密位流中估计得到。文献[3]通过实验证明了该算法无法抵御轮廓攻击。Chang等人[2]提出在比特流加密之前预留嵌入秘密信息的空间,与文献[1]相比提高了嵌入容量,但预留嵌入秘密信息的空间需要进行额外的计算,算法复杂度较高,且加密算法仍与文献[1]相同,依然存在同样的安全问题。

(2) 置乱加密

He等人[4]提出了一种基于置乱的JPEG图像加密方案。该算法通过图像的系数特征生成自适应加密密钥,从而生成置乱序列,并分别对AC系数和DC系数置乱实现JPEG图像加密,在加密过程中不会产生文件增长。对于DC系数,该算法采用了分类、类间置乱和分组迭代交换,很好解决了置乱导致的文件增长和DC系数超出范围的问题;对于AC系数,该算法采用了分类、类间置乱和全局块置乱,加密AC系数的过程中也不会产生文件增长。下面分别对文献[4]的自适应加密密钥的生成、DC系数和AC系数的加密过程进行描述。

自适应加密密钥生成过程如下:

1) 设置用户初始密钥 ${​{k}_{m}}=\{​{​{x}_{m}},{​{\mu }_{m}}\}$

2) 统计图像的系数特征${​{h}_{i}}$${​{h}_{i}}$表示拥有 i 个非零AC系数的图像块数量。

3) 计算系数特征的哈希码。使用SHA3-512哈希函数生成 hi 的512位哈希码。

4) 哈希码分组拼接。将512位哈希码分为左右两部分,分别对左右部分进行拼接。将256比特左半部分分为 29 组,统计每组‘1’的个数,依次将个数拼接到${​{x}_{m}}$后,记为${​{x}_{e}}$。右半部分同理,将个数拼接到${​{\mu }_{m}}$后,记为${​{\mu }_{e}}$。最终生成的自适应加密密钥为${​{k}_{e}}=\{​{​{x}_{e}},{​{\mu }_{e}}\}$

DC系数加密过程如下:

1) 分类。获取JPEG比特流中的N个DC系数,按照连续DC系数的正负是否相同对DC系数分类,同类的DC系数具有相同的正负性。

2) 类间置乱。通过加密密钥生成加密序列,对每个DC系数类进行类间置乱。

3) 分组迭代交换。DC系数加密的安全性与迭代的次数相关,迭代次数越多,DC系数加密越安全。迭代第i次时,DC系数被分为了$\left\lfloor N/2i \right\rfloor $个组,每个组由左、右两部分构成。若二进制密码流指示当前分组可以交换,而且左右两部分交换后不会使DC系数超过规定范围,则将当前组的左右交换,否则就不交换。

AC系数加密过程如下:

1) 分类。获取JPEG比特流中的所有非零AC系数,并根据非零AC系数前的零系数个数分类,同类AC系数前的零系数个数相等。

2) 类间置乱。每个类根据加密密钥生成置乱序列,进行类间置乱。

3)    全局块置乱。根据加密密钥生成块置乱序列,对图像块AC系数进行全局块置乱。

设置迭代次数为15,得到对应的加密图像,如图所示。在加密过程中几乎不产生文件增长,而且使用图像的系数特征以生成自适应加密密钥,每幅图像的DC系数和AC系数置乱序列均不同,很大程度上提高了算法抵抗已知攻击的能力。

(3) 置乱与异或组合加密

研究者在文献[5]中提出了一种基于置乱和异或加密的JPEG图像RDH算法。它使用密钥生成块置乱序列,对图像块进行全局置乱。然后将图像块分为两部分,通过对一部分图像块的AC系数附加位比特进行异或加密形成加密图像,剩余图像块比特流隐藏至JPEG头文件的APPn中。但是全局块置乱可能导致DC系数溢出。

因此Qian [3]等人提出了一种加密JPEG图像RDH算法的新框架。它也使用基于置乱和异或的加密方式,图像块全局置乱后通过DC系数二次差分,在一定程度上解决了DC系数超出范围的问题。在该算法中,一部分图像块用于信息隐藏,剩下的图像块经过异或加密后放入JPEG头文件的APPn中。在APPn中的图像块不可见,保护了用户的图像内容,但这却是以牺牲算法的隐藏容量为代价的。加密效果如下图。

参考文献

1. Qian Z, Zhang X, Wang S. Reversible data hiding in encrypted JPEG bitstream[J]. IEEE Transactions on Multimedia, 2014,16(5):1486-1491.

2.  Chang J C, Lu Y Z, Wu H L. A separable reversible data hiding scheme for encrypted JPEG bitstreams[J]. Signal Processing, 2017,133:135-143.

3.  Qian Z, Xu H, Luo X, Zhang X. New framework of reversible data hiding in encrypted JPEG bitstreams[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2019, 29(2):351-362.

4. He J, Huang S, Tang S, Huang J. JPEG image encryption with improved format compatibility and file size preservation[J]. IEEE Transactions on Multimedia, 2018, 20(10):2645-2658.

5. Qian Z, Zhou H, Zhang X, Zhang W. Separable reversible data hiding in encrypted JPEG bitstreams[J]. IEEE Transactions on Dependable and Secure Computing, 2018, 15(6): 1055-1067.

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

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

相关文章

代码随想录训练营Day 33|Python|Leetcode|● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

理论基础 动态规划五步曲 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始…

vue3——笔记2(计算属性,类与样式绑定)

计算属性 在 Vue3 中,计算属性的用法和 Vue2 基本上是一样的,但是在性能上有了一些改进。Vue3 中计算属性是通过computed函数来创建的,计算属性的值会在相关依赖发生改变时自动更新。与 Vue2 相比,Vue3 的计算属性在一些场景下会…

某翻译平台翻译接口逆向之webpack学习

逆向网址 aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLw 逆向链接 aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLyMv 逆向接口 aHR0cHM6Ly9kaWN0LnlvdWRhby5jb20vd2VidHJhbnNsYXRl 逆向过程 请求方式 POST 逆向参数 sign c168e4cb76169e90f82d28118dbd24d2 接口请求结果解密 过程分析 根据XHR…

大数据第七天

文章目录 吐槽一下这个是怎么需要真的这么大吗? 内核错误内核软死锁(soft lockup)我这个cpu很高吗?大模型都说了不超过80就行了 FinBi安装FinBI下载链接安装时间比较长 吐槽一下 dbeaver 查询hive 数据信息是真的慢,没有一点快的方式&…

【优秀AI项目】每日跟踪 OpenVoice ,AI快站,OpenVoice

持续更新好玩的开源AI项目或AI商业应用体验 一起来玩转AI!! 1 huggingface 国内镜像站:AI 快站 HUggingface被墙了,emmmmm 所以我之前玩模型的一大感觉就是 下载什么模型之类的太难受了!服了 看到一个镜像站——…

在Visio中插入半圆状箭头

在 Microsoft Visio 中,你可以通过以下步骤来绘制一个带箭头的半圆: 1.打开 Visio:打开 Microsoft Visio 软件。 2.选择绘图类型:在 Visio 中,你可以选择使用“基本形状”或“箭头线”工具来绘制带箭头的半圆。 使用…

文件权限管理

文件权限管理 1. 权限对象 权限对象含义u属主,所有者g属组o其他人 2. 权限类型 权限类型含义值r读权限4w写权限2x执行权限1 3. 修改文件属主及属组 命令:chown(change own)更改文件或目录属主与属组名 3.1 修改文件属主与属组 只修改属主:chown $…

Open CASCADE学习|一个点的坐标变换

gp_Trsf 类是 Open CASCADE Technology (OCCT) 软件库中的一个核心类,用于表示和操作三维空间中的变换。以下是该类的一些关键成员和方法的介绍: 成员变量: scale: Standard_Real 类型,表示变换的缩放因子。 shape: gp_TrsfFor…

Android11 SystemUI clock plugin 插件入门

插件的编写 参照ExamplePlugin,需要系统签名。 需要先编译以下模块得到jar,引用在项目中。 m SystemUIPluginLibcom.android.systemui.permission.PLUGIN PluginManager.addPluginListener SystemUI 是如何发现 clock plugin 的? Syste…

FDY10蓄电池容量检测仪

FDY10-H说明书2013 08.pdf (book118.com)https://max.book118.com/html/2017/0510/105769526.shtm FDY10用户手册 - 百度文库 (baidu.com)https://wenku.baidu.com/view/22e7fe672d3f5727a5e9856a561252d380eb20ac?aggId28d62908f12d2af90242e62a&frcatalogMain_graph_v10…

ThingsBoard处理设备上报的属性并转换为可读属性

一、前言 二、案例 1、AI生成JSON数据体 2、将json数据体直接通过遥测topic发送查看效果 3、可查看目前整个数据都在一起 ​编辑 4、配置附规则链路 5、对msg的消息值,进行数据的转换,并从新进行赋值。 6、规则链路关联关系 7、再次通过MQTT发送遥…

WebGIS

文章目录 GIS的全名是Geographic Information System,中文全名是地理信息系统。 它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术…

详解23种设计模式——单例模式

单例模式 | CoderMast编程桅杆单例模式 单例模式是最常用的设计模式之一,他可以保证在整个应用中,某个类只存在一个实例化对象,即全局使用到该类的只有一个对象,这种模式在需要限制某些类的实例数量时非常有用,通常全局…

【GitHub】如何在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰

【GitHub】如何在github上提交PR(Pull Request 写在最前面1. 准备工作1.1 注册 GitHub 账号1.2 了解 Git 基础1.3 找到一个项目 2. 创建你的 PR2.1 Fork 和克隆仓库2.2 创建一个新的分支2.3 进行更改2.4 推送更改到 GitHub2.5 创建 Pull Request 3. 优化你的 PR3.1 保持提交清晰…

JetBot手势识别实验

实验简介 本实验目的在JetBot智能小车实现手势识别功能,使用板卡为Jetson Nano。通过小车摄像头,识别五个不同的手势,实现小车的运动及灯光控制。 1.数据采集 连接小车板卡的Jupyterlab环境,运行以下代码块,配置数据…

Vitis HLS 学习笔记--C/C++ static 关键字的作用

目录 1. 简介 2. c/c共有性质 3. c独有性质 4. 示例说明 5. static 对于 HLS 工具的影响 6. 总结 1. 简介 在Vitis HLS中,偶尔会用到 static 关键字。考虑到Vitis HLS同时兼容C和C语言,有必要理解这两种语言中static关键字细微差异。本文旨在梳理…

Linux cmake 初窥【1】

1.开发背景 linux 下编译程序需要用到对应的 Makefile,用于编译应用程序,但是 Makefile 的语法过于繁杂,甚至有些反人类,所以这里引用了cmake,cmake 其中一个主要功能就是用于生成 Makefile,cmake 的语法更…

AIGC:开启内容创作新纪元,我们如何看待它的影响与前景?

AIGC的概念 AIGC(Artificial Intelligence Generated Content)的概念主要是指人工智能生成内容。 这是一种新的人工智能技术,它利用人工智能模型,根据给定的主题、关键词、格式、风格等条件,自动生成各种类型的文本、图…

Maya vs Blender:制作3D动画首选哪一个?

就 3D 动画而言,有两款3D软件引发了最多的争论:Blender 与 Maya。这两个强大的平台都提供强大的工具集,使动画故事和角色栩栩如生。但作为一名3D动画师,您应该投入时间学习和创作哪一个呢?下面我将从以下六点给您一个清…

SQL优化——全自动SQL审核

文章目录 1、抓出外键没创建索引的表2、抓出需要收集直方图的列3、抓出必须创建索引的列4、抓出SELECT * 的SQL5、抓出有标量子查询的SQL6、抓出带有自定义函数的SQL7、抓出表被多次反复调用SQL8、抓出走了FILTER的SQL9、抓出返回行数较多的嵌套循环SQL10、抓出NL被驱动表走了全…