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

【AES加密专题】1.AES的原理详解和加密过程

目录

一、什么是加密?

1.加密算法的定义和基本概念

2.对称加密算法

原理:

常见算法:

3.非对称加密算法

原理:

常见算法:

二、AES

1.AES(advanced encryption standard 高级加密标准)介绍

2.对称加密算法与非对称加密算法的区别

3.AES的基本结构

4.加密流程


一、什么是加密?

1.加密算法的定义和基本概念

加密算法是一种数学函数,用于将原始信息(明文)转换为密文,使得未经授权的用户难以理解信息的内容。这个过程需要一个密钥,密钥是一个控制加密和解密过程的参数。加密算法主要分为对称加密算法和非对称加密算法。

2.对称加密算法

原理:

对称加密算法使用相同的密钥进行加密和解密。发送方和接收方必须共享这个密钥。例如,当用户A要发送一条消息给用户B时,他们需要事先协商好一个密钥。用户A使用这个密钥对消息进行加密,然后将密文发送给用户B。用户B收到密文后,使用相同的密钥进行解密,得到原始消息。

常见算法:

  • DES(数据加密标准):它是一种比较早期的对称加密算法。DES采用64位的分组长度,但是其中有效密钥长度为56位。由于密钥长度相对较短,现在已经不太安全,容易被暴力破解。例如,在早期的银行系统数据加密中曾经使用DES算法,但随着计算机计算能力的提升,其安全性受到挑战。

  • AES(高级加密标准):这是目前应用非常广泛的对称加密算法。AES支持128位、192位和256位的密钥长度。它的分组长度为128位。例如,在无线网络安全协议(如WPA2)、磁盘加密(如WindowsBitLocker)等众多领域都有应用。AES的安全性较高,在合理的时间内很难通过暴力破解获取密钥。

  • 优点和缺点:

    • 优点:加密和解密速度快,适用于大量数据的加密。因为使用相同的密钥,算法实现相对简单。

    • 缺点:密钥管理困难。由于发送方和接收方需要共享密钥,在多个用户的网络环境中,密钥的分发和存储容易出现安全问题。如果密钥泄露,整个加密系统就会失效。

3.非对称加密算法

原理:

非对称加密算法使用一对密钥,即公钥和私钥。公钥可以公开,任何人都可以获取。私钥则由所有者保密。当用户A要发送消息给用户B时,用户A使用用户B公布的公钥对消息进行加密,然后发送给用户B。用户B收到密文后,使用自己的私钥进行解密。反过来,用户B也可以使用自己的私钥对消息签名,用户A可以使用用户B的公钥验证签名的真实性。

常见算法:

  • RSA:这是最著名的非对称加密算法之一。

  • ECC(椭圆曲线密码学):ECC是基于椭圆曲线离散对数问题的非对称加密算法。

  • 优点和缺点:

    • 优点:密钥管理方便,公钥可以公开分发,不需要像对称加密那样担心密钥的安全分发问题。并且可以用于数字签名,确保消息的来源和完整性。

    • 缺点:加密和解密速度相对较慢,尤其是对于较长的消息或大量数据,计算成本较高。

二、AES

1.AES(advanced encryption standard 高级加密标准)介绍

  • 明文P

    • 没有经过加密的数据。

  • 秘钥K

    • 用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。

  • AES加密函数

    • 设AES加密函数为E,则C=E(K,P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。

  • 密文C

    • 经加密函数处理后的数据

  • AES解密函数

    • 设AES解密函数为D,则P=D(K,C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

2.对称加密算法与非对称加密算法的区别

  • 对称加密算法

    • 加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。

  • 非对称加密算法

    • 加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为RSA、ECC和EIGamal。

3.AES的基本结构

AES的基本结构是一个分组加密的框架,通常分为若干“轮”(round)来处理数据。AES的加密过程由初始轮、多个主轮和最后一个轮组成,每一轮执行特定的数据处理步骤,确保密文的安全性和混淆性。

在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,如下表所示:

密钥长度是指在加密算法中使用的密钥的位数或字节数。它是加密强度的重要因素,通常以比(bit)为单位表示。密钥长度直接影响到加密算法的安全性和计算复杂度。

分组长度是指分组加密算法在处理数据时,每次处理的固定长度数据块的大小,通常以字节(Bytes)或比特(Bits)为单位。

加密轮数(Number of Rounds)指的是对每个数据分组执行加密处理的重复次数。每一轮加密都是对数据进行一系列特定的操作,包括字节替换(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns),以及与密钥的轮密钥加(AddRoundKey)运算。轮数的增加使得AES更具抗攻击性。

4.加密流程

a. 密钥扩展(Key Expansion)

  • 将输入的密钥通过一个密钥扩展算法,生成多个轮密钥(Round Keys)。

  • AES-128 会生成11个轮密钥(原密钥+10轮加密密钥)。

b. 初始轮操作(Initial Round)

  • AddRoundKey:将明文和第一个轮密钥进行按位异或(XOR)操作。

c. 主要轮操作(Main Rounds)

  • 每一轮包括以下四个步骤:

      使用S-Box(置换盒)对每个字节进行非线性替换,提高算法的安全性。

    • SubBytes(字节替换)

  • ShiftRows(行移位)

  对状态矩阵的每一行按固定规则进行循环左移。

  • MixColumns(列混合)

  对状态矩阵的每一列进行线性变换,增强列间的混淆性。

  • AddRoundKey(轮密钥加)

  将状态矩阵与当前轮的轮密钥按位异或(XOR)。

d. 最终轮操作(Final Round)

  • 和主要轮类似,但省略MixColumns(列混合)步骤。

下一篇:

【AES加密专题】2.AES头文件详解-CSDN博客

http://www.dtcms.com/a/462341.html

相关文章:

  • hello_servlet
  • 易拉罐和瓶子分类数据集 6059张图片,支持yolo,coco json,paschal voc xml格式,识别率可达92.5%,文末提供下载地址
  • 1 玩转Linux命令行:基础文件操作实战教程
  • 图观 流渲染打包服务器
  • 为什么只有中国做网站需要备案建站技术博客
  • 最好的微网站建设价格搜索引擎排名国内
  • 自动化测试中元素定位失败的解决策略
  • 心痛之窗:滑动窗口算法解爱与愁的心痛(洛谷P1614)
  • 鸿蒙HTTP请求老是发不出去?一文带你彻底排查所有坑!
  • c# 开发网站开发做市级网站需要什么
  • 购物网站建设的必要性电商设计年终总结
  • 元宵节html+css+js 5页
  • 基于单片机的温度烟雾与漏电综合火灾报警系统设计
  • NX565NX578美光SSD固态闪存NX579NX580
  • 永久解决ubuntu网络连接问题
  • Linux timeout 命令详解:精准控制程序运行时长,避免资源浪费
  • 免费php域名网站专业品牌网站设计公司
  • 选择海外代理IP的方法
  • C语言中整数与浮点数的内存存储详解
  • 旅游建设投资公司网站建设局的全称
  • 网站建设的公司哪家强前端开发工程师是什么专业
  • 手机上自己如何做网站做视频网站用什么语言
  • 【图像处理基石】GIS图像处理入门:4个核心算法与Python实现(附完整代码)
  • 青岛+网站建设wordpress制作百度地图xml
  • 建站多语言方案
  • 网站开发时间计划智慧旅游网站开发与设计
  • 生成与无监督学习 —— 奶茶店的 “新品研发与原料优化体系”
  • 网站开发第三方支付用什么工具建设网站
  • [xboard] 27kernel内核中的kconfig工作原理及完整示例
  • Arduino 与 Raspberry Pi 的区别