当前位置: 首页 > news >正文

基于AES的遥感图像加密算法matlab仿真

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

4.1 AES 加密算法概述

4.2 基于 AES 的遥感图像加密算法原理

5.完整程序


1.程序功能描述

       通过AES算法对遥感图像进行加密和解密,分析加解密处理后图像的直方图,相关性,熵,解密后图像质量等。

2.测试软件版本以及运行结果展示

MATLAB2022A版本运行

3.核心程序


Image_RGB           = rgb2gray(I);
Image_RGB           = imresize(Image_RGB,[256,256]);figure;
subplot(131);
imshow(Image_RGB,[]);
title(['原图']);[rr,cc] = size(Image_RGB);for i = 1:rr/16for j = 1:ccM_data2{i,j} = Image_RGB(16*(i-1)+1:16*i , j);end
end%设置密钥
key_hex = {'00' '01' '02' '03' '04' '05' '06' '07' '08' '09' '0a' '0b' '0c' '0d' '0e' '0f'};
%AES初始化[SBOX,invSBOX,w,polys,invpolys] = func_AES_parameter(key_hex); %加密处理
for i = 1:rr/16for j = 1:ccimages_AES{i,j} = func_AES(double(M_data2{i,j}),w,SBOX,polys,1);end
end%显示加密后的图像
for i = 1:rr/16for j = 1:cctmp                           = (images_AES{i,j})';iamges_aes(16*(i-1)+1:16*i,j) = double(tmp);end
endsubplot(132);
imshow(iamges_aes,[]);
title(['加密图']);[rr,cc] = size(Image_RGB);
%解密处理
for i = 1:rr/16for j = 1:ccimages_deAES{i,j} = func_invAES(images_AES{i,j},w,invSBOX,invpolys,1);end
end 
%显示解密后的图像
for i = 1:rr/16for j = 1:cctmp                             = (images_deAES{i,j})';iamges_deaes(16*(i-1)+1:16*i,j) = double(tmp);end
endsubplot(133);
imshow(iamges_deaes,[]);
title(['解密图']);PSNR = psnr(uint8(Image_RGB), uint8(iamges_deaes))
29_005_1m

4.本算法原理

       随着遥感技术的不断发展,遥感图像在军事、环境监测、资源勘探等领域发挥着越来越重要的作用。然而,由于遥感图像通常包含大量敏感信息,如地理坐标、军事设施等,因此对其进行安全有效的加密成为了一个至关重要的问题。高级加密标准(Advanced Encryption Standard,AES)作为一种广泛应用的对称加密算法,具有加密速度快、安全性高的特点,非常适合用于遥感图像的加密。

4.1 AES 加密算法概述

       AES 是一种分组密码算法,它将明文分成固定长度的分组,然后对每个分组进行加密。AES 的分组长度可以是 128 位、192 位或 256 位,密钥长度也可以是 128 位、192 位或 256 位。AES 算法主要由以下几个部分组成:

字节替换(SubBytes)

行移位(ShiftRows)

列混合(MixColumns)

轮密钥加(AddRoundKey)

AES 加密算法通常进行多轮迭代,每一轮都包括上述四个操作。在最后一轮中,不进行列混合操作。

4.2 基于 AES 的遥感图像加密算法原理

将遥感图像转换为二维矩阵形式。假设图像的大小为 M×N,将其表示为一个 M×N 的矩阵 I。然后,对矩阵 I 进行灰度化处理,将其转换为灰度图像。灰度化处理可以采用加权平均法,即对于彩色图像的每个像素点,根据其 RGB 分量的值计算出一个灰度值。设像素点的 RGB 分量分别为 R、G、B,则灰度值 Gray = 0.299R + 0.587G + 0.114B。最后,将灰度图像的像素值进行归一化处理,使其取值范围在[0, 1]之间。归一化处理可以采用公式:Gray_norm = Gray / 255。

AES 加密过程

密钥生成:选择一个合适的密钥长度,如 128 位或 256 位。使用密钥生成算法生成一个密钥 K。

分组处理:将预处理后的图像矩阵 I 按照 AES 的分组长度进行分组。如果图像的大小不是分组长度的整数倍,则需要进行填充处理,使图像的大小能够被分组长度整除。

轮密钥扩展:根据密钥 K,使用轮密钥扩展算法生成多个轮密钥。轮密钥的数量取决于 AES 的加密轮数和密钥长度。

加密迭代:对每个图像分组进行多轮加密迭代。每一轮加密包括以下四个步骤:

字节替换(SubBytes):使用一个 S 盒(Substitution Box)对每个字节进行替换操作。S 盒是一个 16×16 的矩阵,它将输入的字节映射为另一个字节。设输入字节为 x,则替换后的字节为 S[x]。

行移位(ShiftRows):将矩阵的每一行进行循环移位操作。第 0 行不进行移位,第 1 行循环左移 1 个字节,第 2 行循环左移 2 个字节,第 3 行循环左移 3 个字节。

列混合(MixColumns):对矩阵的每一列进行线性变换操作。设矩阵的一列向量为 [s0, s1, s2, s3],则经过列混合后的向量为 [s'0, s'1, s'2, s'3],其中:

s'0 = (2s0 + 3s1 + 1s2 + 1s3) mod 256
s'1 = (1s0 + 2s1 + 3s2 + 1s3) mod 256
s'2 = (1s0 + 1s1 + 2s2 + 3s3) mod 256
s'3 = (3s0 + 1s1 + 1s2 + 2s3) mod 256

轮密钥加(AddRoundKey):将当前轮的轮密钥与矩阵进行异或操作。设矩阵为 A,轮密钥为 K,则异或后的矩阵为 A ⊕ K。

5.完整程序

VVV

相关文章:

基于AES的遥感图像加密算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 AES 加密算法概述 4.2 基于 AES 的遥感图像加密算法原理 5.完整程序 1.程序功能描述 通过AES算法对遥感图像进行加密和解密,分析加解密处理后图像的直方图,相关…...

MySQL insert 记录后查询是乱码问题分析

问题现象 后台应用程序使用的是云上的 MySQL 服务,需要给 MySQL 数据表里 insert 一些数据,平时都是先运行一个 MySQL 的 pod: kubectl run mysql-client --rm -it --restartNever --image mysql:5.7 --command -- env LANGC.UTF-8 mysql -…...

字符串算法之AC 自动机(Aho-Corasick Algorithm, 多模式匹配)详细解读

AC自动机(Aho-Corasick Algorithm)是一种高效的多模式字符串匹配算法,用于同时查找多个模式串(子串)在文本串中的出现位置。它结合了字典树(Trie)和有限状态机(Finite State Machine…...

YoloV10改进:Block改进|使用ContextAggregation模块改善C2f模块|即插即用

摘要 在计算机视觉领域,目标检测与实例分割任务一直是研究的热点。YoloV10作为目标检测领域的佼佼者,凭借其出色的性能和效率赢得了广泛的认可。然而,随着技术的不断进步,如何进一步提升YoloV10的性能成为了我们追求的目标。近期…...

学习之高阶编程str方法

__str__方法 问题思考:交互环境下print打印的内容和和直接输入变量,返回的内容不一样这是为什么?. 使用print打印的时候触发的是_str_方法, 注意点: 重写str,必须要记得写return. return返回的必须是一个字符串对象。 class MyClass:def _…...

FreeRTOS:事件标志组

目录 一、简介 二、 事件控制块 三、相关API 四、 应用场景 一、简介 在FreeRTOS中,使用信号量可以实现同步,但是使用信号量来同步的话任务只能与单个的任务进行同步。有时候某个任务可能会需要与多个任务进行同步,此时信号量就无能为力。…...

【高分论文密码】AI赋能大尺度空间模拟与不确定性分析及数字制图

随着AI大语言模型的广泛应用,大尺度空间模拟预测与数字制图技术在不确定性分析中的重要性日益凸显。这些技术已经成为撰写高分SCI论文的关键工具,被誉为“高分论文密码”。大尺度模拟技术能够从不同的时空尺度揭示农业生态环境领域的内在机理和时空变化规…...

智能摆件(墨水屏)

因为需要申请8k的堆,所以需要更改堆的大小 stm32修改堆栈大小(堆栈空间不足导致死机)_minimum heap size-CSDN博客...

ansible————playbook

一、playbook和ad hoc命令 ad hoc命令是单行,一个简单的任务,运行一次。ansible真正强大的地方是使用ansible的playbook重复运行多次复杂的任务。 一个play是是一组有序的任务,该paly对应着在inventory被选择的主机。一个playbook是一个包含…...

linux日志分割工具logorate快速验证配置是否有效

创建一些文件, 并修改文件的mtime(修改时间) # /var/log/test/*.log touch -d "2024-10-14" test1.log touch -d "2024-10-15" test2.log touch -d "2024-10-16" test3.log touch -d "2024-10-17" test4.log#快速创建一个1G的大文…...

Unity3D URP画面品质的上限如何详解

Unity3D是一款广泛应用于游戏开发的引擎,它提供了多种渲染管线用于实现不同的画面品质。其中一种渲染管线是Universal Render Pipeline(简称URP),它是Unity3D的一种轻量级渲染管线,专注于提供高性能和可移植性。 对惹…...

风管阻力计算

风管阻力主要包括摩擦阻力和局部阻力两大类。摩擦阻力:空气在风管内流动时,与管壁的摩擦作用导致的能量损失,与管道长度、断面尺寸、风速、空气密度等参数有关。局部阻力:风管系统中的弯头、三通、变径、阀门等部件,由于改变了气流的流动方向或速度,导致的额外能量损失,用局部阻…...

【redis】redis的多线程和IO多路复用

【redis】redis的多线程和IO多路复用 【一】前言【二】Redis单线程和多线程问题的背景【1】Redis的单线程【2】Redis为什么选择单线程?【3】Redis为什么开始利用多核?【4】Redis当前的性能瓶颈【5】Redis的主线程如何和IO线程协同 【三】IO多路复用的理解…...

webstorm 编辑器配置及配置迁移

1.下载地址 WebStorm:JetBrains 出品的 JavaScript 和 TypeScript IDE 其他版本下载地址 2.安装 点击下一步安装,可根据需要是否删除已有版本 注意: 完成安装后需要激活 3.设置快捷键 以下为个人常用可跳过或根据需要设置 如&#xff1a…...

Oracle19.25发布,如何打补丁到19.25

一. 19.25发布 2024年10月16日 19c 19.25补丁发布 文档编号19202410.9,文档编码规则: 19(版本号)2024(年份)07(当季的第一个月01/04/07/10).9 一般每个季度的首月中15号左右发布…...

vue3中,拦截双击事件的第一次点击,写一些逻辑

在 Vue 3 中&#xff0c;如果想要拦截双击事件的第一次点击并执行一些逻辑&#xff0c;你可以使用一个状态变量来跟踪第一次点击事件&#xff0c;并在第二次点击时阻止第一次点击逻辑的执行。以下是一个实现示例&#xff1a; <template><divmousedown"handleMou…...

落地 ZeroETL 轻量化架构,ByteHouse 推出“四个一体化”策略

在数字化转型的浪潮中&#xff0c;数据仓库作为企业的核心数据资产&#xff0c;其重要性日益凸显。随着业务范围扩大&#xff0c;企业也会使用不同的数据仓库来管理、维护相关数据。研发人员需要花费大量时间和精力&#xff0c;从中导出数据&#xff0c;然后进行手动整理、转换…...

如何提高LabVIEW编程效率

提高LabVIEW编程效率对开发者来说非常重要&#xff0c;尤其是在处理复杂项目或紧迫的开发周期时。以下是一些可以显著提升LabVIEW编程效率的技巧&#xff0c;从代码结构、工具使用到团队协作的多个角度进行详细分析&#xff1a; 1. 模块化设计 模块化设计 是提高代码可维护性和…...

Android 开发 TabLayout 自定义指示器长度

前言 原生 TabLayout 的指示器长度是充满整个屏幕的&#xff0c;但在实际开发中 UI 会设计成 指示器的长度等于或者小于标题字体长度&#xff0c;如图 如果设置成跟字体长度一样即使用 API: mTabLayout.setTabIndicatorFullWidth(false);或者在 xml 布局文件中的TabLayout标签…...

构造mex(牛客周赛 Round 59)

题目链接&#xff1b; D-构造mex_牛客周赛 Round 59 (nowcoder.com) 题目描述&#xff1a; 输出和输出描述&#xff1a; 输入样例&#xff1a; 3 6 3 3 7 4 3 6 6 0 输出样例&#xff1a; NO YES 4 0 1 2 YES 1 1 1 1 1 1 分析&#xff1a; 数学思维题&#xff0c;赛后看了一…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...