Home
Services
Shop
Pages
About Us
Services Details
Shop Details
Blog Details
Contact
Blog
(+86) 13108958693
Mon-Fri: 17:00 - 22:00 Sat/Sun: 09:00 - 22:00
(+86) 13108958693
Mon-Fri: 17:00 - 22:00 Sat/Sun: 09:00 - 22:00
扫一扫加站长微信
您的鼓励是我最大的动力
微信打赏
2元
4元
10元
微信
支付宝
首页
标准&法规
ISO-21434
R155
R156
密码工具
对称密码
非对称密码
摘要函数
消息认证码
数字签名
数字证书
随机数
密钥
软件安全
AUTOSAR
QNX
Linux
硬件安全
SecureZone
HSM
TEE
攻击手段
Dos 攻击
中间人攻击
...
...
防御措施
最小权限原则
安全启动
安全升级
安全通信
安全诊断
安全日志
防火墙
安全测试
模糊测试
渗透测试
漏洞扫描
关于
扫一扫加站长微信
您的鼓励是我最大的动力
2元
4元
10元
微信
支付宝
AES
主页
密码工具
对称密码
对称密码介绍
DES
Triple DES
> AES <
Rabbit
RC4
异或
非对称密码
非对称密码介绍
RSA
SM2
ECC
摘要函数算法
摘要函数介绍
MD4
MD5
SHA
SM3
CRC
消息认证码
消息认证码介绍
CMAC
HMAC
数字签名
数字签名介绍
RSA-Signature
ECDSA
数字证书
数字证书介绍
X.509
X.509 证书解析
X.509 证书生成
X.509 证书验证
SSL
SSL 证书解析
...
...
...
CSR 生成
随机数
随机数介绍
PRNG
TRNG
密钥
密钥介绍
Diffie-Hellman 密钥交换
口令
运行模式:
ECB(电子密码本)
CBC(密码块链)
OFB(输出反馈)
CFB(加密反馈)
CTR(计算器模式)
填充模式:
None
PKCS7
Zeros
ANSIX923
ISO10126
密钥长度:
128bit
192bit
256bit
密钥:
Hex
Text
明文格式:
十六进制
Base64
密文格式:
十六进制
Base64
加密 ↓
解密 ↑
AES (Advanced Encryption Standard)
是取代其前任标准(DES)而成为新标准的一种对称密码算法。全世界的企业和密码学家提交了多个对称密码算法作为AES的候选,最终在2000年从这些候选算法中 选出了一种名为Rijindael的对称密码算法,并将其确定为了AES。
AES 的加密和解密
和 DES —样,AES 算法也是由多个轮构成的,其中每一轮分为 SubBytes、ShiftRows、MixColumns 和 AddRoundKey 共 4 个步骤。DES 使用 Feistel 网络作为其基本结构,而 AES 没有使用 Feistel 网络,而是使用了 SPN 结构。
AES 的输入分组为 128 比特,也就是 16 字节。首先,需要逐个字节地对 16 字节的输入数据进行
SubBytes
处理。所谓 SubBytes,就是以每个字节的值(0 ~ 255 的任意值)为索引, 从一张拥有 256 个值的替换表(S-BOX)中查找出对应值的处理。也就是说,要将一个 1 字节的值替换成另一个 1 字节的值。下图为 4 x 4=16 字节的数据中通过 S-Box 替换 1 字节的情形。
SubBytes 之后需要进行
ShiftRows
处理。这一步是将以 4 字节为单位的行(row)按照一定的规则向左平移,且每一行平移的字节数是不同的。下图为 ShiftRows 中对其中一行进行处理的情形。
ShiftRows 之后需要进行 MixColumns 处理。这一步是对一个 4 字节的值进行比特运算,将其变为另外一个 4 字节值。下图为 MixColumns 中对其中一列(column)进行处理的情形。
最后,需要将 MixColumns 的输出与轮密钥进行 XOR,即进行
AddRoundKey
处理。下图为 AddRoundlCey 中对其中 1 个字节进行处理的情形。到这里,AES 的一轮就结束了。 实际上,在 AES 中需要重复进行 10 ~ 14 轮计算。
通过上面的结构我们可以发现输人的所有比特在一轮中都会被加密。和每一轮都只加密一半输入的比特的 Feistel 网络相比,这种方式的优势在于加密所需要的轮数更少。此外,这种方式还有一个优势,即 SubBytes、 ShiftRows 和 MixColumns 可以分别以字节、行和列为单位进行并行计算。
在 AES 的加密过程中,每一轮所进行的处理为:
SubBytes --> ShiftRows --> MixColumns --> AddRoundKey
而在解密时,则是按照相反的顺序来进行的,即:
AddRoundKey --> InvMixColumns --> InvShiftRows --> InvSubBytes
其中,AddRoundKey 是与轮密钥进行 XOR 运算,因此这一步在加密和解密时是完全相同的,剩下的步骤中名字前面都带有 Inv,这表示与原始步骤相对应的逆运算。下为解密处理的情形。
运行模式
详情请见:
对称密码介绍
——分组密码的模式。
填充模式
None:
不填充
PKCS7:
填充字符串由一个字节序列组成,每个字节填充该字节序列的长度
Zeros:
填充字符串由设置为零的字节组成
ANSIX923:
填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节均填充数字零
ISO10126:
填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节填充随机数据
密钥(偏移)
Text:
表示是文本格式,加密前会使用 UTF-8 编码,把它转成 byte[] 数组
Hex
表示是十六进制格式,加密前会把十六进制字符串转成 byte[] 数组
+