高级加密标准(Advanced Encryption Standard,AES)
一、DES 与 AES 比较:
1、DES 采用 56位有效密钥,AES 采用 多种 密钥长度
2、DES 对 64位分组数据进行加密,AES对 128位分组数据进行加密
3、不同于 DES ,AES 不是采用 Feistel 结构,而是置换-组合结构
4、DES 中大量的位操作在软件实现方面不是非常方便,而AES 采用了字节操作。
二、图示 AES 加密过程:
对不同长度的密钥,AES采用不同的加密轮次:
加密过程下面有个视频,我觉得讲得很详细。
三、某些细节:
①: 密钥扩展:简单说就是将原来的密钥扩展到足够用的长度。
128位密钥: 扩展到 44字(176字节)
192位密钥: 扩展到 13*4 = 52 字
256位密钥: 扩展到 15*4 = 60 字
扩展过程请参考代码(不贴出来)和视频。 fun_KeyExpansion()
②: 轮密钥加:只是将 数据块和 该轮的密钥进行异或运算 。
③:字节替换:有个S盒可以进行替换。(相对于 DES 的替换 ,感觉这个函数的实现是小儿科 )
比如现在有一个字节为: 0x19 (16进制!) 则替换为 0xd4
④: 行移位:分成 4 行 第一行不用移位,第二循环左移 8 位 (一个字节 !) 第三行循环移2个字节,第四行移3个字节。
⑤: 列混淆:这里采用了 上的乘法 。
#define GF_01(b) ((byte)b)
#define GF_02(b) ((byte)((b < 0x80)? ((b<<1)) : (((b<<1) ^ 0x1b))))
#define GF_03(b) ((byte)(((GF_02(b)))^ (( b))))
这几个宏定义,定义了几个运算 而计算过程参考下图和 线性代数知识。
解密过程调用函数不同,理解了加密解密只是一个逆过程。
四、实现过程的一些解释:
①:首先数据在内存中存放方式:
②:行移位的时候采用按字操作,需要注意字有大小端之分:使用宏定义<Little_Endian> 进行控制
- 大小: 58.3 KB
- 大小: 889 Bytes
- 大小: 4.9 KB
- 大小: 51.9 KB
- 大小: 10.8 KB
分享到:
相关推荐
用C语言实现的AES加密解密算法,用C语言实现的AES加密解密算法
VB.NET实现AES加密解密代码,可直接使用
' 功能: AES加密解密 password<==>hwWpiegaWDeE8kTlb/5BQg== , 8705a989e81a583784f244e56ffe4142 ' [Str] 预备转换的byte ' [StrKey] 16位的密钥 ' [StrIv] 16位的偏移 ' [Encrypt] 加密(缺省值)还是解密 ' ...
本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原先的输入,运行的结果...
AES加密解密轮转算法工具,最大支持256bit长度的密钥,明文支持HEX和字串。可供学习设计参考。
1. 在深入理解AES加密/解密算法理论的基础上,设计一个AES加密/解密软件系统; 2. 完成CBC和ECB模式加密解密
主要介绍了java使用Hex编码解码实现Aes加密解密功能,结合完整实例形式分析了Aes加密解密功能的定义与使用方法,需要的朋友可以参考下
AES加密解密验证工具(支持各种加密模式)
本地图片AES加密解密,利用AES加密的方式将图片保存于本地,其他App获取该图片无法显示,信息安全可靠加密速度高且十分有效,最好是保存的图片源文件在500KB以下为最佳!
aes加密解密js
详细演示AES加密解密过程.AES是分组密钥,算法输入128位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列)。每一轮都需要一个与输入分组具有相同长度的扩展密钥...
php+uni-app AES加密解密
支持密码长度AES_128/AES_192/AES_256,支持工作模式 ECB/CBC,支持填充模式 ZERO/PKCS7/ISO。已通过测试。内附使用方法。
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 该压缩包中包括aes加密算法的c++实现代码。
AES加密解密算法的Java实现.doc
java代码-java使用AES加密解密 AES-128-ECB加密 ——学习参考资料:仅用于个人学习使用
实现的AES加密解密算法,高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥
C# JAVA nodejs通用的AES加密解密算法,考虑到实际使用过程中由于客户端和服务端使用的语言不一样而又需要对数据进行加密和解密的情况,特此总结了C# JAVA nodejs通用的AES加密解密算法,供需要者参考。
这是一套有关于aes加密解密的资源,包含java端及其对应的js端
实现C语言的AES加密解密。包含各种加密模式,ECB、CBC