密码学_AES加密算法

news2024/11/18 0:17:08

目录

简介

AES的加密过程如下(以128位密钥为例):

异或运算

初始变换(initial round)

字节代换(SubBytes)

行位移(ShiftRows)

列混合(MixColumns)

轮密钥加(AddRoundKey)


简介

        AES高级加密标准(Advanced Encryption Standard)  对称加密,分组(128bit)加密,128bit的密钥,密钥长度也可以是192位或256位 但是对应的加密轮数不同。        

        由于DES已经被破解,其脆弱性也随着时间的推移不断显现,AES的出现旨在取代DES成为广泛使用的标准。虽然来自微软和比利时鲁汶天主教大学(欧洲顶级高校)的研究人员们近日就发现了一种可以攻破AES的方法。这种新型攻击方法破解AES密钥所需的时间只有此前方法的三分之一到五分之一,而且对任何版本的AES加密算法都适用。AES算法的发明人Joan Daemen、Vincent Rijmen也都已经证明了上述攻击的有效性,但是目前没有人能完整的破解AES。

AES  加密密钥长度 (32位比特字)明文分组长度(32位比特字)加密轮数
AES-1284410
AES-1926412
AES-2568414

 AES的整体加密过程如下,具体每一步的详细过程我将依次讲述:

运算单位:DES作为64位加密密钥,以位为加密单位,横向排列,AES是以字节为加密单位,纵向排列,但是最终的运算都是以二进制为单位。

AES的加密过程如下(以128位密钥为例):

异或运算

        所谓异或运算就是将两组二进制序列按位进行比较,同取0,异取1的过程

举例: 1 0 0 1和0 1 0 1

        1 0 0 1

        0 1 0 1

结果为:1 1 0 0

初始变换(initial round)

        初始变换就是将明文矩阵和第0轮的key密钥按字节进行异或运算的过程,此过程得到的最终矩阵将进行十轮运算。

举例:

04对应的二进制为:0 0 0 0 0 1 0 0

A0对应的二进制为:1 0 1 0 0 0 0 0

二者异或结果为:1 0 1 0 0 0 1 0 0等于A4

字节代换(SubBytes)

        字节代换就是查表,每个字节的前1个值就是行数,后1个值就是列数

在S-Box表中找到对应行列位置的值,替换这个值即可。

举例:2D对应2行,D列,就将D8这个值替换到这个位置。

S-Box表如下

行位移(ShiftRows)

        行的位移其实就是每一行左移指定个字节,移出去的字节补在本行最后。具体如下,由于比较好理解就不举例了。

列混合(MixColumns)

        经过行位移之后的矩阵叫状态矩阵S,列混合就是把该矩阵左乘一个固定矩阵,该矩阵只有三种数值(01,02,03)。

        这里的左乘不是普通数学意义上的乘积,也不是简单的线性代数那样的矩阵相乘,它基于GF(2^8)上的二元运算,具体我没研究过,反正就按照以下公式来算就行。

每个位置的值运算规则为

                                

计算公式如下:

00000010对应02,00000011对应03 00000001对应01

a7a6a5a4a3a2a1a0对应某一个字节的8位

 

 

以S举例:

 

轮密钥加(AddRoundKey)

        首先,将初始密钥放在一个4X4的矩阵,如下图

情况1:如果i不是4的倍数,那么第i列由如下等式确定:W[ i ] = W[ i-4 ] ⨁ W[ i-1 ]

        例如W[ 5 ]的计算如下:

                W[ 5 ]= W[ 1 ]⨁W[ 4 ]

                                                   


情况2:如果i是4的倍数,那么第i列由如下等式确定:W[i] = W[ i-4 ] ⨁ T(W[ i-1 ])

  T()函数又分为三步:字循环,字节代换和轮常量异或

第一步:字循环:将1个字中的4个字节循环左移1个字节。即将输入字[b0, b1, b2, b3]变换成[b1,b2,b3,b0]。
第二步:字节代换:对字循环的结果使用S盒进行字节代换。
第三步:轮常量异或:将前两步的结果同轮常量Rcon[j]进行异或,其中j表示轮数。

举例:

         W[ 4 ]= W[ 0 ] ⨁ T(W[ 3 ])

T函数运算如下:

第一步:字循环

第二步:字节代换,参照S-Box表进行代换

第三步:轮常量异或

最后这个轮常量异或有个对应的表,一共十组

所以   W[ 4 ]= W[ 0 ] ⨁ T(W[ 3 ])

              

 

 到此为止AES的加密过程学习完毕,若有错误欢迎指正!

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

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

相关文章

Socket套接字(网络编程万字总结-附代码)

文章目录前言一、概念二、分类(三类)2.1 流套接字:使用传输层TCP协议2.2 数据报套接字:使用传输层UDP协议2.3 原始套接字三、UDP数据报套接字编程3.1 Java数据报套接字通信模型3.2 DatagramSocket API3.2.1 DatagramSocket 构造方…

Shell函数

1、 函数定义 格式一: function name() { Command sequence; } 格式二: name() { Command sequence); } 1、()内是没有参数的,他只是函数定义的固定格式。 2、第八行fun 是函数的调用(第一种方式) 2、 函数传参 1、在Shell中,调用…

Jina 实例秀|基于CLIP模型的跨模态视频搜索

不同于传统的关键词搜索,你不需要给每个视频素材人为地打上标签。使用开源产品 CLIP-as-service,输入画面的描述文本,直接搜索到对应的视频片段。CLIP 是一个强大的模型,能够很好地判别文本和图片是否相关,但将其集成到…

【LeetCode】验证二叉搜索树 [M]

98. 验证二叉搜索树 - 力扣(LeetCode) 一、题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。…

微信小程序框架02

目录 1.框架简介 2.视图层 View 2.2 WXML 2.3 WXSS 2.4 JS 3.事件 4.逻辑层 APP service 4.1 生命周期 4.2 页面路由 4.3模块化 1.框架简介 小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。 整个小程序框架系统分为两部…

山东大学机器学习课程资源索引

实验 完整实验代码获取 github repo 【ML实验4】多分类贝叶斯模型 【ML实验5】SVM(手写数字识别、核方法) 【ML实验6】K-means(图像压缩) 【ML实验7】人脸识别综合项目(PCA、多分类SVM) 一个PCA加速技巧 …

数据治理:企业数据治理蓝图

参考《一本书讲透数据治理》、《数据治理》等 文章目录企业数据治理体系企业数据治理9个要素企业数据治理4个层面企业数据治理之道企业数据治理之法企业数据治理之术企业数据治理之器企业数据治理体系 数据治理、数据管理、数据管控三者是什么关系?很多人都搞混&am…

【Spring(二)】IoC入门案例(XML版)

文章目录前言1.IoC入门案例总结前言 上篇文章我们讲了IOC和DI两个核心概念,本篇文章我们会在Spring的环境下来实现它们💪💪。 1.IoC入门案例 我们先来实现IoC也就是管理Bean的这套模式,我们先来说说这套程序应该怎么做&#xff0c…

深度学习Week12-训练自己的数据集(YOLOv5)

这周接着详细解析小白YOLOv5全流程-训练实现数字识别_牛大了2022的博客-CSDN博客_yolov5识别数字,上周入门教大家下载配置环境,如果没有的话请参考上周的文章深度学习Week11-调用官方权重进行检测(YOLOv5)_牛大了2022的博客-CSDN博…

《IDC MarketScape:2022全球通用计算机视觉厂商评估》出炉,腾讯云智能入选

近日,全球领先的IT市场研究和咨询公司IDC发布了2022年度《MarketScape:全球通用计算机视觉厂商评估》报告(以下简称“报告”),腾讯云智能凭借在计算机视觉领域领先的技术积累、出色的产品能力和丰富的行业落地实践&…

案例分享:硬件敏捷

“没有人能够在硬件领域推动以两周为单位的循环迭代!”当人们谈起敏捷方法在包含了硬件及软件产品开发时,第一反应都是类似的论调。然而,已经有一些团队,尝试将已有的可靠硬件开发理念与少量从敏捷软件中借鉴的新鲜思想结合&#…

系统日志- Journal and Rsyslog

Log文件 Rsyslog 的配置文件/etc/rsyslog.conf Rsyslog的旧的信息会在最前面,新的信息会在最下面。 tail -f /var/log/messages #可以动态监控日志信息logger 发送日志信息 logger -p user.notice #“内容” -p选项测试实验: 1.在/etc/rsyslog.d/文…

基于ThinkPHP框架开发的全套家政服务小程序源码(带调试视频)

家政服务小程序源码 在线派单 商家入驻 多城市带积分开源小程序 了解更多内容可私信我。 1、独立版 ThinkPHP框架 后端全开源; 2. 开发语言:PHP; 3. 数据库:MySQL; 4.小程序端:Uniapp; 5.…

Vuex基础概念用法(新手入门)

一.Vuex概念及解释 定义: vue全局状态管理器。有了Vuex在任意组件/页面都可以访问vuex数据,当数据更新的时候,引用vuex的组件视图会自动更新。也就是说Vuex实现数据全局共享,响应式更新。 1.state(存放状态) $store…

《flask》flask+mqtt联动快速上手

简介 本文旨在介绍如何快速上手联动flask mqtt,本文将会给出一个简单的demo,用于演示在如何通过访问flask接口来触发mqtt,并在flask运行的基础的上对mqtt进行订阅。 快速上手 因为有项目需求,所以需要flask mqtt进行联动&…

Docker网络中篇-docker网络的四种类型

通过上一篇学习,我们对docker网络有了初步的了解。本篇,咱们就来实战docker网络。 docker网络实战 实战docker网络,我们将从以下几个案例来讲解 1:birdge是什么? 2:host 3:none 4:container 实战网络类型如下: 在docker中,网络的配置是以json格式存在的,下面…

知识变现创业者必读——《知识变现实操手册》

现在越来越多人,正在跑步进入知识变现创业这个赛道。 为什么进入这个赛道,因为能赚钱钱啊,大部分人是受到了知识变现大咖们日入万元,月入十万,这些赚钱效益的刺激,匆忙进入的。 我问一句,你知识…

网络路由技术和协议

网络路由是网络通信的重要组成部分。路由可帮助您的网络组件从可用选项中选择最佳网络路径。这使得网络通信高效可靠。启用此功能的硬件组件称为路由器。监控和管理路由器是网络管理员日常工作中不可或缺的一部分。由于路由器可以决定网络连接和可用性的成败,因此了…

MATLAB-plot绘图函数

plot函数是MATLAB中最核心的二维绘图函数,它有多种语法格式可以实现多种功能。 plot函数的基本调用格式如下。 plot(y) 当y为向量时,是以y的分量为纵坐标、元素序号为横坐标,用直线依次连接数据点, 绘制曲线。若y为实矩阵&#…

【技术分享】如何实现功能完备性能优异的RTMP、RTSP播放器?

技术背景 这几年,我们对接了太多有RTSP或RTMP直播播放器诉求的开发者,他们当中除了寻求完整的解决方案的,还有些是技术探讨,希望能借鉴我们播放端的开发思路或功能特性,完善自己的产品。 忙里偷闲,今天我…