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.mfbz.cn/a/576721.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Feign功能详解、使用步骤、代码案例

简介:Feign是Netflix开发的声明式,模板化的HTTP客户端,简化了HTTP的远程服务的开发。Feign是在RestTemplate和Ribbon的基础上进一步封装,使用RestTemplate实现Http调用,使用Ribbon实现负载均衡。我们可以看成 Feign R…

经典的免费wordpress模板

这款经典的免费WordPress模板以鲜艳的红色为主调,充满了活力与热情。设计简洁而现代,适合各种类型的项目网站。模板采用响应式设计,确保在不同设备和屏幕尺寸上都能呈现出完美的视觉效果。 红色象征着激情、活力和自信,这款模板…

ubuntu子系统密码忘记了,怎么办?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

18种WEB常见漏洞:揭秘网络安全的薄弱点

输入验证漏洞: 认证和会话管理漏洞: 安全配置错误: 其他漏洞: 防范措施: Web 应用程序是现代互联网的核心,但它们也容易受到各种安全漏洞的影响。了解常见的 Web 漏洞类型,对于开发人员、安全测试人员和普通用户都至关重要。以下将介绍 18 种常见的 …

HttpClient工具类编写

HttpClient 介绍 HttpClient是Apache Jakarta Common下的一个子项目,它提供了一个高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包。它支持HTTP协议最新的版本和建议,并实现了Http1.0和Http1.1协议。 HttpClient具有可扩展的面向对象的结构…

电脑壁纸怎么设置?简单3步,让你的电脑桌面变得更合心意

电脑壁纸是我们每天在电脑上工作和娱乐时不可或缺的一部分。一张精美的电脑壁纸,既能提升我们的工作效率,也能为我们带来愉悦的心情。无论是静谧的自然风光、抽象的艺术设计,还是心动的明星照片,都可以在电脑壁纸的世界里找到自己…

HF区块链链码基础

链码生命周期 一 . 链码准备 准备文件 . 在测试目录下创建chaincode,拷贝测试链码进 chaincode目录,拷贝 set-env.sh 脚本进 scripts 目录 二. 打包链码 打包测试链码 export FABRIC_CFG_PATH${PWD}/config peer lifecycle chaincode package ./chaincode/chaincode_basic.…

Springboot 中RedisTemplate使用scan来获取所有的key底层做了哪些事情

直接上代码&#xff0c;围绕着代码来讨论 redisTemplate.execute((RedisCallback<Object>) (connection) -> {Cursor<byte[]> scan connection.scan(ScanOptions.scanOptions().count(2).match("*").build());scan.forEachRemaining((bytes) -> {…

TypeScript 中 interface 和 type 的使用#记录

一、interface&#xff1a;接口 interface A{label: string; }const aa ((aObj: A) > {console.log(aObj.label);//123return aObj.label; })aa({label: 123}) 1、可选属性 interface A{label: string;age?: number; } 2、只读属性 interface A{label: string;age?:…

【网络安全】安全事件管理处置 — windows应急响应

专栏文章索引&#xff1a;网络安全 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、账户排查 二、windows网络排查 三、进程排查 四、windows注册表排查 五、内存分析 总结 一、账户排查 账户排查主要包含以下几个维度 登录服务器的途径弱口令可疑账号 新增…

019基于JavaWeb的在线音乐系统(含论文)

019基于JavaWeb的在线音乐系统&#xff08;含论文&#xff09; 开发环境&#xff1a; Jdk7(8)Tomcat7(8)MysqlIntelliJ IDEA(Eclipse) 数据库&#xff1a; MySQL 技术&#xff1a; JavaServletJqueryJavaScriptAjaxJSPBootstrap 适用于&#xff1a; 课程设计&#xff0c;毕…

Web-SpringBootWen

创建项目 后面因为报错&#xff0c;所以我把jdk修改成22&#xff0c;仅供参考。 定义类&#xff0c;创建方法 package com.start.springbootstart.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotati…

易基因:Nat Commun:RRBS测序揭示小鼠衰老过程中的DNA甲基化变化轨迹|研究速递

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 DNA甲基化数据可以生成非常精确的年龄预测器&#xff0c;但关于这一关键表观遗传生物标志物在生命周期中的动态变化知之甚少。关于衰老不连续方面的研究仍处于起步阶段&#xff0c;关键的…

冯唐成事心法笔记 —— 知人

系列文章目录 冯唐成事心法笔记 —— 知己 冯唐成事心法笔记 —— 知人 冯唐成事心法笔记 —— 知世 冯唐成事心法笔记 —— 知智慧 文章目录 系列文章目录PART 2 知人 人人都该懂战略人人都该懂战略第一&#xff0c;什么是战略第二&#xff0c;为什么要做战略第三&#xff0…

文本溢出 右侧对齐 左侧显示省略号

要想 把 “这是一段很长的文本&#xff0c;我们只想显示省略号前面的部分内容" 展示成”…只想显示省略号前面的部分内容“ 代码如下 <div class"ellipsis-start">这是一段很长的文本&#xff0c;我们只想显示省略号前面的部分内容</div>.ellips…

力扣118. 杨辉三角

Problem: 118. 杨辉三角 文章目录 题目描述思路复杂度Code 题目描述 思路 1.初始化状态&#xff1a;将创建的二维数组dp的第一列和主对角线上元素设为1&#xff1b; 2.状态的转移&#xff1a;从第一行、列起始&#xff0c;dp[i][j] dp[i - 1][j - 1] dp[i - 1][j] 复杂度 时…

vue3第二十五节(h()函数的应用)

1、前言&#xff1a; 为什么vue 中已经有 template 模板语法&#xff0c;以及JSX了&#xff0c;还要使用 h()渲染函数&#xff1b; vue 中选择默认使用template 静态模板分析&#xff0c;有利于DMO性能的提升&#xff0c;而且更接近真实的HTML&#xff0c;便于开发设计人员理…

Java之复制图片

从文件夹中复制图片 从这个文件夹&#xff1a; 复制到这个空的文件夹&#xff1a; 代码如下&#xff1a; import java.io.*; import java.util.Scanner;/*** 普通文件的复制*/public class TestDome10 {public static void main(String[] args) {// 输入两个路径// 从哪里(源路…

ssm智能停车场管理系统

视频演示效果: SSMvue智能停车场 摘 要 本论文主要论述了如何使用JAVA语言开发一个智能停车场管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述智能停车…

2024多用户商城系统哪家产品好

在当今激烈的电商竞争中&#xff0c;搭建一个功能强大、性能稳定的多用户商城系统至关重要。针对这一需求&#xff0c;以下是我为您推荐的五款优秀多用户商城系统&#xff0c;它们在功能、定制性、安全性和用户体验方面均表现出色&#xff0c;为您的电商平台搭建提供了可靠的解…
最新文章