首页 > 编程语言 >AES加密解密算法原理,以及AES有哪些用途?

AES加密解密算法原理,以及AES有哪些用途?

时间:2023-01-05 18:03:27浏览次数:63  
标签:AES 加密 字节 解密 明文 密钥

AES加密算法是双向加密,它与单向加密MD5摘要算法不同。我们都是知道双向加密是可逆的,存在密文的密钥,AES算法是现在比较流行的加密算法之一。那么,AES加密解密算法原理是什么,主要有哪些用途呢?

AES加密解密算法原理,以及AES有哪些用途?_加密解密

AES加密算法原理

1.密钥

密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。

AES支持三种长度的密钥:128位,192位,256位。平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。

2.填充

要想了解填充的概念,我们先要了解AES的分组加密特性。什么是分组加密呢?我们来看看下面这张图:AES算法在对明文加密的时候,并不是把整个明文一股脑加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。

这些明文块经过AES加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密结果。

假如一段明文长度是192bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding)。

填充涉及以下三种填充模式:

AES加密解密算法原理,以及AES有哪些用途?_加密算法_02

NoPadding:

不做任何填充,但是要求明文必须是16字节的整数倍。

PKCS5Padding(默认):

如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则补全为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}

ISO10126Padding:

如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则可能补全为{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}

关于AES解密

AES加密解密算法原理,以及AES有哪些用途?_加密解密_03

网上有很多号称可以对AES进行加密解密的网站,确实有一些是可以“解密”的,我们可以通过md5.cn网站,然后点击【在线工具】-【AES加密&解密】,在打开的页面中输入明文/密文,然后输入密钥,点击加密或解密按钮,然后在下方就会显示得到的结果。大家可以去试一试。

AES有的用途

AES具有加密解密速度迅速和编码紧凑等特点,有很大的开发潜力和较高的使用价值,被应用至信息保护,电子安全等方面及领域。

标签:AES,加密,字节,解密,明文,密钥
From: https://blog.51cto.com/u_15693841/5991700

相关文章

  • golang的AES加密
    AES常用的加解密的方式无非三种.对称加密,加解密都使用的是同一个密钥,其中的代表就是AES非对加解密,加解密使用不同的密钥,其中的代表就是RSA签名算法,如MD5、SH......
  • 简单的C#&PHP对称加解密
    byte[]ctxbytes=System.Text.Encoding.UTF8.GetBytes(ctx);byte[]keybytes=System.Text.Encoding.UTF8.GetBytes(key);intctxLen=ctxbytes.Length......
  • go-dongle 0.2.5 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库
    dongle是一个轻量级、语义化、对开发者友好的Golang编码解码和加密解密库Dongle已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/dong......
  • [加密]公钥/私钥/数字签名理解
    公钥,私钥和数字签名一、公钥加密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让......
  • 使用Jmeter轻松实现AES加密测试
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试大家在自......
  • 合并加密的m3u8
    0x01工具ffmpeg.exe如果没有则使用以下地址下载0x02m3u8格式我的m3u8内容是:#EXTM3U#EXT-X-VERSION:3#EXT-X-TARGETDURATION:6#EXT-X-PLAYLIST-TYPE:VOD#EXT-X-M......
  • MySQL8.0默认加密连接方式
    Mysql8.0开始默认采用新的caching_sha2_password的身份验证方式,常规老接口会因此无法连接数据库。为继续使用老的身份验证方式,需显式指定身份验证方式为mysql_native_pas......
  • 深入浅出简单JS加密解密案例
    加密是指使用密钥将明文(未加密的信息)转换为密文(无法被读取的信息)的过程。解密则是指使用相同的密钥将密文转换回明文的过程。JavaScript提供了一种内置的加密方法,称为​​......
  • 【加密与解密】第三章①
    这一章是静态分析技术。高级语言编写的程序一般有两种形式,一种是被编译成机器语言在CPU上执行,例如C++,机器语言与汇编语言相对应。因此可以将机器语言转化成汇编语言,这个就......
  • FreeSWITCH的TLS加密
    听着很高大上(实际也很实用)的加密机制,在FreeSWITCH里配置支持竟然这么简单!GreateFreeSWITCHandGreateProgrammer!①cd/usr/local/freeswitch/bin(以默认的安装路径为......