JPEG图像常用加密算法简介

news2024/10/5 22:23:08

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.coloradmin.cn/o/1627199.html

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

相关文章

Spring Boot 3.2.5 集成 MyBatisPlus

前置条件&#xff0c;先连接好数据库&#xff0c;并且数据库里新建表插入几条数据 连接mysql传送门 版本 Spring Boot 3.2.5 第一步&#xff0c;添加依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-start…

神经网络的激活函数

目录 神经网络 激活函数 sigmoid 激活函数 tanh 激活函数 backward方法 relu 激活函数 softmax 激活函数 神经网络 人工神经网络&#xff08; Artificial Neural Network&#xff0c; 简写为ANN&#xff09;也简称为神经网络&#xff08;NN&#xff09;&#xff0c…

FANUC机器人SOCKET连接指令编写

一、创建一个.KL文件编写连接指令 创建一个KL文本来编写FANUC机器人socket连接指令 二、KAREL指令代码 fanuc机器人karel编辑器编辑的karel代码如下&#xff1a; PROGRAM SM_CON %COMMENT SOCKET连接 %STACKSIZE 4000 --堆栈大小 %INCLUDE klevccdfVAR status,data_type,in…

Unreal Engine创建Plugin

打开UE工程&#xff0c;点击编辑&#xff0c;选择插件 点击“新插件”按钮&#xff0c;选择“空白选项”填入插件名字"MultiPlayerPlugin"&#xff0c;填入插件作者、描述&#xff0c;点击“创建插件”按钮打开C工程&#xff0c;即可看到插件目录&#xff0c;编译C工…

【介绍下如何使用CocoaPods】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

vue与Spring boot数据交互例子【简单版】

文章目录 什么是Vue&#xff1f;快速体验Vueaxios是什么&#xff1f;向Springboot后端发送数据接收Springboot后端数据小结 什么是Vue&#xff1f; 官网解释&#xff1a;Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上…

BUUCTF_[BSidesCF 2020]Had a bad day

[BSidesCF 2020]Had a bad day 1.一看题目直接尝试文件包含 2.直接报错&#xff0c;确实是存在文件包含漏洞 http://307b4461-36d6-443f-879a-68803a57f721.node5.buuoj.cn:81/index.php?categoryphp://filter/convert.base64-encode/resourceindex strpos() 函数查找字符串…

【Linux】:文件查看 stat、cat、more、less、head、tail、uniq、wc

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Linux深造日志 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、stat&#xff08;查看文件详细属性信息&#xff09;1.1 内容解析&#xff1a;1.2…

【基础篇】Git 基础命令与核心概念

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 一&#xff0c;Git 初识 1.1&#xff0c;问题引入 不知道你工作或学习时&#xff0c;有没有遇到…

JAVA前端快速入门基础_javascript入门(01)

写在前面:本文用于快速学会简易的JS&#xff0c;仅做扫盲和参考作用 1.JS是什么 JavaScript是一门跨平台&#xff0c;面向对象的脚本语言(即不需要编译&#xff0c;可以直接通过浏览器进行解释)。JS和Java是两门完全不相同的语言&#xff0c;但是基础的语法是类似的 2.JS的引…

uniapp 微信小程序 分享海报的实现

主页面 <template><view class"page"><!-- 自定义导航栏--><Navbar title"我的海报"></Navbar><view class"container"><poster ref"poster" :imageUrl"image" :imageWidth"7…

【MHA】MySQL高可用MHA源码1-主库故障监控

1 阅读之前的准备工作 1 一个IDE工具 &#xff0c;博主自己尝试了vscode安装perl的插件&#xff0c;但是函数 、变量 、模块等都不能跳转&#xff0c;阅读起来不是很方便。后来尝试使用了pycharm安装perl插件&#xff0c;阅读支持跳转&#xff0c;自己也能写一些简单的测试样例…

达梦(DM) SQL日期操作及分析函数

达梦DM SQL日期操作及分析函数 日期操作SYSDATEEXTRACT判断一年是否为闰年周的计算确定某月内第一个和最后一个周末某天的日期确定指定年份季度的开始日期和结束日期补充范围内丢失的值按照给定的时间单位查找使用日期的特殊部分比较记录 范围处理分析函数定位连续值的范围查找…

【定制化体验:使用Spring Boot自动配置,打造个性化Starter】

项目结构 Pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4…

LabVIEW高效目标跟踪系统

LabVIEW高效目标跟踪系统 随着机器视觉技术的飞速发展&#xff0c;设计和实现高效的目标跟踪系统成为了众多领域关注的焦点。基于LabVIEW平台&#xff0c;结合NI Vision机器视觉库&#xff0c;开发了一种既高效又灵活的目标跟踪系统。通过面向对象编程方法和队列消息处理器程序…

【CTF Crypto】CTFShow 萌新 密码3 Writeup(摩尔斯电码+培根密码)

萌新 密码3 3 题目名称&#xff1a;我想吃培根 题目描述&#xff1a; – — .-. … . …–.- … … …–.- -.-. — — .-… …–.- -… …- - …–.- -… .- -.-. — -. …–.- … … …–.- -.-. — — .-… . .-. …–.- – – -… -… – -… – -… – – – -… -… -……

鸿蒙(HarmonyOS)性能优化实战-Trace使用教程

概述 OpenHarmony的DFX子系统提供了为应用框架以及系统底座核心模块的性能打点能力&#xff0c;每一处打点即是一个Trace&#xff0c;其上附带了记录执行时间、运行时格式化数据、进程或线程信息等。开发者可以使用SmartPerf-Host调试工具对Trace进行解析&#xff0c;在其绘制…

yudao-cloud微服务系统系统模块+后台管理系统成功运行

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 第一章 芋…

精酿啤酒:酿造工艺的自动化与智能化发展

随着科技的不断进步&#xff0c;自动化与智能化已成为啤酒酿造工艺的重要发展方向。Fendi Club啤酒紧跟时代潮流&#xff0c;积极推动酿造工艺的自动化与智能化发展&#xff0c;旨在提高生产效率、确保产品品质和满足市场需求。 Fendi Club啤酒引入自动化生产设备。他们采用自动…

rabbitmq集群配置

1&#xff0c;配置环境变量 MY_POD_NAME&#xff1a;当前Pod的名称 RABBITMQ_ERLANG_COOKIE&#xff1a;设置Erlang Cookie用于节点间通信安全验证&#xff0c;值来自/nfs/rabbitmq/lib/.erlang.cookie文件内容 RABBITMQ_NODENAME&#xff1a;根据Pod名称动态生成了RabbitMQ…