信息网络安全——AES加密算法

算法背景介绍

  该算法是由美国发明的,1997年NIST发布算法征集公告,98年入围15个候选算法,99年进入五强,00年凭借安全性,性能,大小实现特性为标准最终选定,01年正式发布AES标准。
  选择AES主要有以下几个理由:

  • 安全性:稳定的数学基础没有算法弱点,算法抗密码分析强度高
  • 性能:能在多个平台上以较快的速度实现
  • 大小:不占用大量的存储空间和内存
  • 实现特性:灵活性,硬件和软件都使用,算法的简单性(过程简单,搞懂了是这样)
      我在这里先给出一个框架图,第一遍直接可以跳过,怕吓住饱饱们,学懂了之后再来观看,思路清晰,操作稳健。
    在这里插入图片描述  两头一个轮秘钥加,中间就四个渣渣轮转:字节代换、行位移、列混淆、轮秘钥加

基础知识

  我们主要从中间四个部分讲解,在这里我将要补充两个基础知识:有限域GF(2 8 2^828)上的运算

加法’+':字节按位异或运算

( a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0 ) + ( b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 ) = ( c 7 c 6 c 5 c 4 c 3 c 2 c 1 c 0 ) 其 中   c i   = a i + b i , i = 0 , 1 , 2 , 3 , . . . , 7 (a_7a_6a_5a_4a_3a_2a_1a_0)+(b_7b_6b_5b_4b_3b_2b_1b_0)=(c_7c_6c_5c_4c_3c_2c_1c_0) \\ 其中\ c_i\ =a_i+b_i,i=0,1,2,3,...,7(a7​a6​a5​a4​a3​a2​a1​a0​)+(b7​b6​b5​b4​b3​b2​b1​b0​)=(c7​c6​c5​c4​c3​c2​c1​c0​)其中 ci​ =ai​+bi​,i=0,1,2,3,...,7
在这里插入图片描述

乘法 ·

c ( x ) = a ( x ) ⋅ b ( x ) = a ( x ) ⋅ b ( x )   m o d   m ( x ) a ( x ) = a 7 x 7 + a 6 x 6 + a 5 x 5 + a 4 x 4 + a 3 x 3 + a 2 x 2 + a 1 x + a 0 x b ( x ) = b 7 x 7 + b 6 x 6 + b 5 x 5 + b 4 x 4 + b 3 x 3 + b 2 x 2 + b 1 x + b 0 c ( x ) = a 7 x 7 + a 6 x 6 + a 5 x 5 + a 4 x 4 + a 3 x 3 + a 2 x 2 + a 1 x + c 0 m ( x ) = x 8 + x 4 + x 3 + x 2 + 1 \begin {aligned} c(x)&=a(x)·b(x)=a(x)·b(x)\ mod\ m(x)\\ a(x)&=a_7x^7+a_6x^6+a_5x^5+a_4x^4+a_3x^3+a_2x^2+a_1x+a_0x \\ b(x)&=b_7x^7+b_6x^6+b_5x^5+b_4x^4+b_3x^3+b_2x^2+b_1x+b_0 \\ c(x)&=a_7x^7+a_6x^6+a_5x^5+a_4x^4+a_3x^3+a_2x^2+a_1x+c_0 \\ m(x&)=x^8+x^4+x^3+x^2+1 \end {aligned}c(x)a(x)b(x)c(x)m(x​=a(x)⋅b(x)=a(x)⋅b(x) mod m(x)=a7​x7+a6​x6+a5​x5+a4​x4+a3​x3+a2​x2+a1​x+a0​x=b7​x7+b6​x6+b5​x5+b4​x4+b3​x3+b2​x2+b1​x+b0​=a7​x7+a6​x6+a5​x5+a4​x4+a3​x3+a2​x2+a1​x+c0​)=x8+x4+x3+x2+1​
  是普通多项式乘法,但系数运算可看作比特的乘法和异或运算,即看作域{0,1}上的运算。我们可以举个例子 :
在这里插入图片描述问题:第二个等号到第三个等号的因式分解是怎么来的?有一个小技巧哦!请看图:

在这里插入图片描述

具体步骤

轮秘钥加变换

在这里插入图片描述  开始我们的明文和密文都是64位的,我们将它们两个排列成 4 × 4 的矩阵,然后进行异或操作就得到了9轮循环的初始矩阵了。

秘钥拓展(难点)

  秘钥为什么要拓展呢?童鞋,我们可是进行了10轮加密呢,都用一个秘钥进行加密多少有点看不起黑客了吧!也就是我们需要对秘钥进行拓展,把初始的秘钥经过变换,变成10个轮秘钥用于十轮的轮秘钥加。来看总图(浏览一遍看讲解):
在这里插入图片描述

在这里插入图片描述  这里的初始秘钥是64为,按列写成 4 × 4 的矩阵 w,w[0],w[1],w[2],w[3]是列向量。XOR就是异或操作。第一点好理解,当我们所求的行不是4的倍数的时候,w[5] = w[1] 异或 w[4] .如图:
在这里插入图片描述  问题麻烦的是w[4]的求法:
W [ 4 ] = W [ i − 4 ]   X O R    T ( W [ I − 1 ] ) W[4]=W[i-4]\ XOR\ \ T(W[I-1])W[4]=W[i−4] XOR  T(W[I−1])
  其实也就体现在多了一个T()方法处理,让我们来看看他到底是什么牛马蛇神:T()由三部分组成:字循环、字节代换、轮常量异或 我们假设此时求w4

  1. 字节循环:循环的将w[i-1]的元素移位,每次移动一个字节,w[4-1]=w[3]为例:09 cf 4f 3c -> cf 4f 3c 09
    在这里插入图片描述2.字节代换:将四个字节作为S盒的输入,然后获取新的四个字节的输出
    在这里插入图片描述3.轮常量异或:这个轮常量是给定的下面第一张是轮常量表,10个轮常量,将前两步的结果异或如图过程得到T(w3)。
    在这里插入图片描述在这里插入图片描述4.我们把T(w3)和w[0]异或就得到w[4]
    在这里插入图片描述
字节代换

  我们字节代换主要通过S盒来完成的,下面这个是一张S盒的替换表。
在这里插入图片描述  那他又是怎么替换的呢?好好看好好学:非常简单,比如元素A8就是A行,8列即C2.

行位移

  把S盒中的输出进行左移 ,规则:第0行不移动,第1行移动一个字节,第2行两个字节,第3行移动3个字节,这个操作把每一列的4个元素移到了四个不同的列,看下面这张图:
在这里插入图片描述

列混淆

在这里插入图片描述  列混淆就是把上面行位移所得的矩阵按列 左乘以我们给定的矩阵,但是这里的运算和我们学的线性代数有一定的区别。这个乘法是在二元有限域上进行的。
1.把加号变成异或运算,例如:b 0 = 02 × a 0 ⊕ 03 × a 1 ⊕ 01 × a 2 ⊕ 01 × a 3 b_0= 02×a_0⊕03×a_1⊕01×a_2⊕01×a_3b0​=02×a0​⊕03×a1​⊕01×a2​⊕01×a3​.
2.乘法规则需要变更,上面的图已经列出来了:如果所乘的因子 a 7 a_7a7​=0 ,那么结果就是a 6 a_6a6​到a 0 a_0a0​最后补一个零凑成8位即a 6 a 5 a 4 a 3 a 3 a 2 a 1 a 0 0 a_6a_5a_4a_3a_3a_2a_1a_00a6​a5​a4​a3​a3​a2​a1​a0​0,如果a 7 a_7a7​=1,那么就把a 6 a 5 a 4 a 3 a 3 a 2 a 1 a 0 0 a_6a_5a_4a_3a_3a_2a_1a_00a6​a5​a4​a3​a3​a2​a1​a0​0和00011011进行异或得到结果。
举例:
在这里插入图片描述  不过我们要注意这个左乘矩阵,它的值只会是01,02,03.那么就会有以下情况:假设我们列向量为x,01x=x;02x就是我们上面介绍的a 7 a_7a7​分情况;03x= (01异或02) x 展开回到01x,02x上去求解

小结

1.与DES相比,扩散的效果更快,即两轮可达到完全扩散。
2.S盒使用清晰而简单的代数方法构造,避免任何对算法留有后门的怀疑。
3.密钥扩展方案实现对密钥位的非线性混合,既实现了雪崩效应,也实现了非对称性。
4.比穷举攻击更好的攻击进行到6轮,多出4轮可以提供足够多的安全性。(注:针对AFS-128)

CSDN大礼包 _ 《黑客&网络安全入门&进阶学习资源包》免费分享

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

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

相关文章

arm 汇编技巧

汇编标号:f表示forward, b表示backward: Here is an example: 1: branch 1f 2: branch 1b 1: branch 2f 2: branch 1b Which is the equivalent of: label_1: branch label_3 label_2: branch label_1 label_3: branch label_4 label_4: bra…

初始JavaEE篇 —— 文件操作与IO

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 文件介绍 Java标准库中提供操作文件的类 文件系统操作 File类的介绍 File类的使用 文件内容操作 二进制文件的读写操作…

华为网络设备这些“危险命令”,切记不能瞎操作!

在华为网络设备上,有一些“危险操作”命令,因为它们可能会对设备的正常运行、配置数据或网络安全产生重大影响。 在使用这些命令时,需要非常谨慎,确保理解其作用并备份当前配置。 删除配置或数据的命令 reset saved-configurat…

Linux中线程的基本概念与线程控制

Linux操作系统中线程 1、进程指的是加载进内存的程序,进程 内核数据结构 进程代码和数据 2、进程在执行ABCD四个函数时是一个单执行流,而如果想让AB函数和CD函数并发执行,我们通常会创建一个子进程,但这意味着需要创建新的进程…

Jenkins声明式Pipeline流水线语法示例

系列文章目录 docker搭建Jenkins2.346.3版本及常用工具集成配置(ldap、maven、ansible、npm等) docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法 文章目录 系列文章目录jenkins流水线基础1、pipeline1.1、什么是pipeline?1.2、为什么使用pi…

Leetcode 找出字符串中第一个匹配项的下标

算法思想: 检查特殊情况:首先判断needle是否为空字符串。如果是空字符串,根据题意直接返回0,因为空子串默认在任何字符串的起始位置。 获取字符串长度:定义m为haystack的长度,n为needle的长度,…

股市下跌时,期权市场的应对策略有哪些?

在股票交易中,投资者对市场的下跌无能为力,只能眼睁睁地看着自己亏损。在期权交易中,交易方向灵活,也有应对市场下跌的交易策略。下面,我们整理了一些股市下跌时,期权市场的应对策略有哪些?希望…

【C++】 C++游戏设计---五子棋小游戏

1. 游戏介绍 一个简单的 C 五子棋小游戏 1.1 游戏规则&#xff1a; 双人轮流输入下入点坐标横竖撇捺先成五子连线者胜同一坐标点不允许重复输入 1.2 初始化与游戏界面 初始化界面 X 输入坐标后 O 输入坐标后 X 先达到胜出条件 2. 源代码 #include <iostream> #i…

Spring——容器:IoC

容器&#xff1a;IoC IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来…

微服务容器化部署实践(FontConfiguration.getVersion)

文章目录 前言一、整体步骤简介二、开始实战1.准备好微服务2.将各个微服务打包为镜像第一种第二种3. 将各个打包好的镜像,通过docker-compose容器编排,运行即可总结前言 docker容器化部署微服务: 将微服务容器化部署到 Docker 容器中是一个常见的做法,可以提高应用的可移…

提升法律文书处理效率的秘密武器:开源文档比对工具解析

本篇文章介绍了一款针对律师行业的免费开源文档比对工具&#xff0c;旨在解决法律文档的多版本比对难题。通过逐字、逐句精确比对、语义分析、批量处理等核心功能&#xff0c;该工具可高效识别文本差异&#xff0c;提升文书审查效率并降低错误风险。它支持多种文件格式&#xf…

把握鸿蒙生态崛起的机遇:开发者视角的探讨

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; 近年来&#xff0c;鸿蒙系统&#xff08;HarmonyOS&#xff09;的发展备受瞩目。随着其在智能手机、智能穿戴、车载系统和智能家居等领域的广泛应用&#xff0c;鸿蒙系统正逐渐形成与安卓、iOS并列的三足鼎立…

Linux权限和开发工具(3)

文章目录 1. 简单理解版本控制器Git1. 如何理解版本控制 2. Git的操作2.1 Git安装2.2 Git提交身份2.3 Git提交命令2.4 Git版本管理2.5 Git下的同步 3. gdb命令3.1解决gdb的难用问题3.2 gdb/cgdb的使用 1. 简单理解版本控制器Git 1. 如何理解版本控制 我们在做项目的时候可能会…

多线程和线程同步复习

多线程和线程同步复习 进程线程区别创建线程线程退出线程回收全局写法传参写法 线程分离线程同步同步方式 互斥锁互斥锁进行线程同步 死锁读写锁api细说读写锁进行线程同步 条件变量生产者消费者案例问题解答加强版生产者消费者 总结信号量信号量实现生产者消费者同步-->一个…

WSL 2 中 FastReport 与 FastCube 的设置方法与优化策略

软件开发人员长期以来一直在思考这个问题&#xff1a;“我们如何才能直接在 Windows 中运行 Linux 应用程序&#xff0c;而无需使用单独的虚拟机&#xff1f;” WSL 技术为这个问题提供了一个可能的答案。WSL 的历史始于 2016 年。当时&#xff0c;其实现涉及使用 Windows 内核…

【前端】HTML标签汇总

目录 展示用户信息的标签 1.文本标签 span 2.标题标签 h1~h6 3.竖着布局的标签 div 4.段落标签 p 5.超链接标签 a 5.1跳转至网上的资源 5.2锚点 6.列表标签 6.1有序列表 ol 6.2无序列表 ul 7.图片标签 img 7.1相对路径 7.1.1兄弟关系 7.1.2叔侄关系 7.1.3表兄弟…

海外云手机在出海业务中的优势有哪些?

随着互联网技术的快速发展&#xff0c;海外云手机已在出海电商、海外媒体推广和游戏行业都拥有广泛的应用。对于国内的出海电商企业来说&#xff0c;短视频引流和社交平台推广是带来有效流量的重要手段。借助云手机&#xff0c;企业能够更高效地在新兴社交平台上推广产品和品牌…

电脑提示xinput1_3.dll丢失怎么办?游戏DLL修复方法详解

xinput1_3.dll 是一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;它在Windows操作系统中扮演着重要的角色&#xff0c;特别是在处理游戏控制器和其他输入设备的交互方面。这个文件是Microsoft DirectX软件包的一部分&#xff0c;DirectX是微软公司开发的一个多媒体…

Spring资源加载模块,原来XML就这,活该被注解踩在脚下 手写Spring第六篇了

这一篇让我想起来学习 Spring 的时&#xff0c;被 XML 支配的恐惧。明明是写Java&#xff0c;为啥要搞个XML呢&#xff1f;大佬们永远不知道&#xff0c;我认为最难的是 XML 头&#xff0c;但凡 Spring 用 JSON来做配置文件&#xff0c;Java 界都有可能再诞生一个扛把子。 <…

讲讲关于SNMP与智能PDU插座

什么是SNMP 简单网络管理协议 (SNMP) 是一种应用层协议&#xff0c;主要用于网络管理中的设备监控和控制。通过 SNMP&#xff0c;网络管理员可以从管理站远程访问网络中的设备&#xff0c;获取设备的状态信息、配置参数&#xff0c;甚至控制设备的行为。SNMP 被广泛应用于 TCP/…