AES加密原理

news2024/9/21 22:46:20

 

 

AES是一个迭代的、分组密码加密方式,可以使用128 、192和256位密钥。与 公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。

通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结 构,在该循环中重复置换(permutation)和替换(substitution)输入数据,加之  算法本身复杂的加密过程,使得该算法成为数据加密领域的主流。AES加密算法 流程如图6-12所示。

在AES算法中,每一次变换操作产生的中间结果称为状态。将状态表示为二 维字节数组(每个元素为一个字节),包括4行,Nb列。Nb等于数据块长度除以 32 。例如,数据块长度为128时,Nb=4;数据块长度为192时,Nb=6 。同理,密 钥也可表示为二维字节数组(每个元素为一个字节),包括4行,Nk列。Nk等于 密钥块长度除以32。

圈密钥根据圈密钥产生算法由用户密钥产生。圈密钥加密由密钥扩展和圈密 钥选择两步完成。首先将用户的密钥进行密钥扩展,再从扩展密钥中选出圈密

钥。第一个圈密钥由扩展密钥中的前Nb个字组成,第二个圈密钥由接下来的Nb个 字组成,以此类推。最后获得的圈密钥位总数为数据块长度与圈数加l的乘积。

 

 

 

 

 

52ce919ccc7744a3956eafb40babf2c8.png

图6-12    AES加密算法流程

RIJNDAEL算法的迭代圈数Nr由Nb和Nk共同决定,可根据表6-2获得相应Nr 的值。

表6-2    RIJNDAEL算法迭代圈数Nr

3dc0819c497f44a5b7d682e5c088df6d.png

AES加密算法的轮函数采用代替/置换网络结构,包括S盒变换(ByteSub)、 行移位变换(ShiftRow)、列混合变换(MixColumn)、圈密钥加变换

(AddRoundKey)。下面介绍各种变换方式。

 

 

 

 

 

S盒变换是按字节进行的代替变换,是作用在状态中每个字节上的一种非线  性字节变换。首先将字节的值用它的乘法逆来代替,然后将获取的值按式(6-1) 进行仿射变换。

e4bc77651ef3412bb44331dabad6a94f.png

2.行移位变换

行移位变换对状态行进行循环移位。在行移位变换中,状态的后三行以不同 的移位值循环左移。第0行不移位,第1行向左移动C1字节,第2行向左移动C2字 节,第3行向左移动C3字节,移位表如表6-3所示。

表6-3    移位表

53b3e3a12243430297b3a29aa2a419a3.png

3.列混合变换

列混合变换是对状态的列进行混合变换。把状态中的每一列看作GF(28)上 的多项式,并与一个固定多项式c(x )相乘,然后与多项式x4+1进行取模运算,

其中c(x )可表示为

7894432598d749d2b9686798a259df7c.png

4. 圈密钥加变换

圈密钥加变换是利用圈密钥对状态进行模2相加的变换。圈密钥被简单地异

 

 

 

 

 

或到状态中去。其中,圈密钥长度等于数据块长度。

综上所述,AES加密算法由三部分组成:初始圈密钥加、Nr-l圈的标准轮函 数、最后一圈的非标准轮函数。

 

 

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

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

相关文章

小程序中封装下拉选择框

小程序中没有现成的下拉选择组件&#xff0c;有个picker组件&#xff0c;但是是底部弹出的&#xff0c;不满足我的需求&#xff0c;所以重新封装了一个。 封装的下拉组件 html部分&#xff1a; <view class"select_all_view"><!-- 内容说明&#xff0c;可…

ref和reactive, toRefs的使用

看尤雨溪说&#xff1a;为什么Vue3 中应该使用 Ref 而不是 Reactive&#xff1f; toRefs import { ref, toRefs } from vue;// 定义一个响应式对象 const state ref({count: 0,name: Vue });// 使用toRefs转换为响应式引用对象 const reactiveState toRefs(state);// 现在你…

vue3 之 组合式API—reactive和ref函数

ref&#xff08;&#xff09; 作用&#xff1a;接收简单类型或者对象类型的数据传入并返回一个响应式的对象 核心步骤&#xff1a; 1️⃣ 从 vue 包中导入 ref 函数 2️⃣在 <script setup>// 导入import { ref } from vue// 执行函数 传入参数 变量接收const count …

2024亿级密码泄露事件:涉及7084万个邮箱账号

近日&#xff0c;热门漏洞通知服务HIBP所有者特洛伊・亨特&#xff08;Troy Hunt&#xff09;发布博文&#xff0c;表示在暗网上发现了超大规模的泄漏数据集&#xff0c;被称为Naz.API列表。该数据集包含7084万个电子邮件地址以及超过1亿个密码凭证&#xff0c;至少有超过40万 …

【AG32VF407】国产MCU+FPGA Verilog双边沿检测输出方波

视频讲解 [AG32VF407]国产MCUFPGA Verilog双边沿检测输出方波 实验过程 本次使用使用AG32VF407开发板中的FPGA&#xff0c;使用双clk的双边沿进行检测&#xff0c;同步输出方波 同时可以根据输出的方波检测clk的频率&#xff0c;以及双clk的相位关系&#xff0c;如下为verilog…

Google play全球桌面棋牌游戏下载量周排行榜(2024.01.22—01.28)

今天酷鸟远程整理了Google paly桌面棋牌类游戏在美国、香港、巴西地区下载量排行榜前20名情况。 作为谷歌开发者的你&#xff0c;快来看看有没有你关心的游戏应用吧。 如果还想看更多或其它国家和地区的应用&#xff0c;或其它类别应用的相关具体数据&#xff0c;例如&#x…

Patch2QL:开源供应链漏洞挖掘和检测的新方向

背景 开源生态的上下游中&#xff0c;漏洞可能存在多种成因有渊源的其它缺陷&#xff0c;统称为“同源漏洞”&#xff0c;典型如&#xff1a; 上游代码复用缺陷。开源贡献者在实现功能相似的模块时&#xff0c;常复用已有模块代码或逻辑&#xff1b;当其中某个模块发现漏洞后…

成都爱尔林江院长解读儿童青少年为什么一定要进行医学验光配镜

根据国家卫健委数据显示&#xff1a;我国青少年儿童总体近视率为52.7%、高度近视人口超3000万。近视学生中,有10%为高度近视,且占比随年级升高而增长。 近视孩子之多&#xff0c;孩子视力发展备受关注。戴镜进行近视防控十分必要&#xff0c;且眼镜不可随意验配&#xff01; 成…

2024年【安全员-B证】考试资料及安全员-B证模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年安全员-B证考试资料为正在备考安全员-B证操作证的学员准备的理论考试专题&#xff0c;每个月更新的安全员-B证模拟考试题库祝您顺利通过安全员-B证考试。 1、【多选题】《中华人民共和国安全生产法》规定&#…

Linux下qemu的安装并搭建虚拟arm环境(带helloworld测试)【超详细】

qemu的安装并搭建虚拟arm环境 1、准备工作1.1 安装交叉汇编工具1.2 编译内核kernel1.3 u-boot编译1.4 制作根文件系统-busybox 2、启动qemu&#xff08;arm&#xff09;3、helloworld测试 1、准备工作 1.1 安装交叉汇编工具 交叉编译器的作用就不需要详细解释了&#xff0c;因…

C++ Primer 8.1 IO类 知识点

C Primer 8.1 IO类 io对象无拷贝赋值条件状态管理缓存练习题 io对象无拷贝赋值 ofstream out1,out2; //以下操作全为错误 out1out2; ofstream print(out2); out2print(out1)&#xff1b;条件状态 流对象的rdstate成员返回一个iostate值&#xff0c;表示其状态(P279) aotu ol…

springboot151基于web的人力资源管理系统的设计与实现

人力资源管理系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;员工信息因为其管理内容繁杂&#xff0c;管理数量繁…

六大免费的Redis内存分析工具

在我们需要分析Redis实例的内存使用情况时&#xff0c;市场上有着许多免费的开源工具&#xff0c;同时也有少量的付费产品。如果您想更深层次地分析内存相关问题的话&#xff0c;就可能需要用到一些更具针对性的“独门”工具了。 【51CTO.com快译】在我们需要分析Redis实例的内…

STM32--HAL库定时器学习记录(易懂)--持续学习

一、什么是定时器 定时器就是计数器&#xff0c;通过计数完成一系列功能。 二、定时器的分类 定时器分为基本定时器、通用定时器、高级定时器。级别不同&#xff0c;功能不同。级别越高&#xff0c;功能越强。 三、定时器&#xff08;计数器&#xff09;三个重要寄存器 预分…

机器学习_15_贝叶斯算法

文章目录 1 贝叶斯定理相关公式2 朴素贝叶斯算法2.1 朴素贝叶斯算法推导2.2 朴素贝叶斯算法流程 3 高斯朴素贝叶斯4 伯努利朴素贝叶斯5 多项式朴素贝叶斯6 贝叶斯网络6.1 最简单的一个贝叶斯网络6.2 全连接贝叶斯网络6.3 “正常”贝叶斯网络6.4 实际贝叶斯网络&#xff1a;判断…

中国城乡建设统计年鉴,pdf、xls格式,时间覆盖2002-2022年

基本信息&#xff1a; 数据名称: 中国城乡&#xff08;市&#xff09;建设统计年鉴 数据格式: pdf、xls不定 数据时间: 2002-2022年 数据几何类型: 文本 数据坐标系: —— 数据来源&#xff1a;住房和城乡建设部 2005年之后数据中有《中国城市建设统计年鉴》、《中…

基于JAVA的宠物管理系统

技术架构&#xff1a; Servlet JSP MySQL 有需要该项目的小伙伴可以私信我你的Q。 功能介绍&#xff1a; 系统主要分为前台和后台两大模块 前台主要由用户体验使用: 用户登录 注册 查找商品 商品类别等功能导航&#xff1b; 后台…

一些你可能用到的函数和头文件

不知道大家对于bool&#xff08;布尔&#xff09;函数记忆如何&#xff0c;今天我们就讲一下 bool 函数。 在一些要判断一个数是否具有某种性质的时候可以使用 bool 函数&#xff0c;在一些情况下可以结合使用if else 或 switch 以及 while 等函数来做到判断性质。 1. bool 函…

雨云免费SSL证书介绍

SSL证书是网站保护用户数据安全和保护网站自身免受黑客攻击的有效工具。雨云免费SSL证书是一种免费的SSL证书服务。 什么是SSL证书&#xff1f; SSL&#xff08;Secure Sockets Layer&#xff09;证书是一个数字证书&#xff0c;可以证明网站身份的真实性&#xff0c;并保护在…

【Java程序设计】【C00246】基于Springboot的留守儿童爱心网站(有论文)

基于Springboot的留守儿童爱心网站&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的留守儿童爱心网站 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块&#xff1a;系统首页的主要功能展…