在线AES加密解密

在线AES加密解密工具,支持CBC、ECB、CTR等5种加密模式,可自定义密钥为128、192和256位,在线计算AES加密和AES解密结果,支持多种偏移量、填充和输出格式。

加密模式
内容填充
密钥长度
密文类型
AES密钥
iv
密钥填充

在线aes加密iv长度为16字符,密钥长度根据位数为16(128位)、24(192位)和32(256位)字符,iv与密钥超长则截取,不足则末尾填充哦~

无双工具笑脸点赞反馈 45
无双工具尴尬点赞反馈 2
无双工具哭泣点赞反馈 19

AES加密解密在线介绍

AES加密解密算法是最流行的对称加密算法,是为了取代DES而建立的高级加密标准。该算法是可逆的,采用同一个密钥对数据进行对称加密/AES解密。常用于服务端之间的数据传输和安全性校验,https就是用AES来进行数据传输的,英文全称为Advanced Encryption Standard。

AES加密解密原理

AES加密解密过程的核心在于一系列复杂的数学变换,包括字节替换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns,除最后一轮外)和轮密钥加(AddRoundKey)。这些步骤通过多轮迭代,实现对数据的混淆和扩散,生成难以破解的密文。

  1. 密钥扩展:AES的第一步是密钥扩展,将输入的密钥扩展成多个轮密钥。这些轮密钥将在后续的加密轮次中使用,确保每轮加密都使用不同的密钥,增强算法的安全性。
  2. 加密过程:
    字节替换:使用S盒(Substitution box)对输入数据的每个字节进行替换,增加数据的混淆程度。
    行移位:将状态矩阵(4x4字节矩阵)的每一行进行循环左移,不同行的移动距离不同,有助于数据的进一步扩散。
    列混合:通过矩阵乘法运算将状态矩阵的每一列与固定矩阵相乘,进一步混淆数据。但在最后一轮加密中省略此步骤,以简化解密过程。
    轮密钥加:将当前轮次的轮密钥与状态矩阵进行异或运算,将密钥信息融入加密过程。
  3. 解密过程:解密是加密的逆过程,通过相反的顺序执行逆行移位、逆字节替换、逆列混合(除第一轮外)和轮密钥加等步骤,还原原始数据。

AES支持的模式

  1. ECB模式(The Electronic Codebook Mode)
  2. CBC模式(The Cipher Block Chaining Mode)
  3. CFB模式(The Cipher Feedback Mode)
  4. CTR模式(The Counter Mode)
  5. OFB模式(The Output Feedback Mode)

其中,使用最为普遍的是CBC模式,不建议使用的是ECB模式(不安全)

AES常见的内容填充规则

  1. NoPadding:顾名思义,就是不填充。缺点就是只能加密长为BlockSize倍数的信息,一般不会使用
  2. ZerosPadding:全部填充0x00,无论缺多少全部填充0x00,已经是BlockSize的倍数仍要填充,一般不会使用
  3. PKCS#5:缺几个字节就填几个字节,每个字节的值为缺的字节数;在AES加密当中严格来说是不能使用PKCS#5的,因为AES的块大小是16bytes而PKCS#5只能用于8bytes
  4. PKCS#7:缺几个字节就填几个字节,每个字节的值为缺的字节数;当长度不对齐时,将数据填充到满足分组的长度;当长度刚好对齐时,在原始数据末尾新增一个填充块;OpenSSL在AES加密中默认使用PKCS#7
  5. ISO 10126:最后一个字节的值是需要填充的字节数(需要填充的字节数包括了最后一字节),其他全部填随机数
  6. ANSI X9.23:跟ISO 10126很像,只不过ANSI X9.23其他字节填的都是0而不是随机数

AES密钥KEY和初始化向量IV

  1. 密钥KEY:AES标准规定区块长度只有一个值,固定为128Bit,对应的字节为16位。AES算法规定密钥长度只有三个值,128Bit、192Bit、256Bit,对应的字节为16位、24位和32位,其中密钥KEY不能公开传输,用于加密解密数据
  2. 初始化向量IV:该字段可以公开,用于将加密随机化。同样的明文被多次加密也会产生不同的密文,避免了较慢的重新产生密钥的过程,初始化向量与密钥相比有不同的安全性需求,因此IV通常无须保密。然而在大多数情况中,不应当在使用同一密钥的情况下两次使用同一个IV,一般推荐初始化向量IV为16位的随机值

初始化向量IV可以有效提升安全性,但是在实际的使用场景中,它不能像密钥KEY那样直接保存在配置文件或固定写死在代码中,一般正确的处理方式为:在加密端将IV设置为一个16位的随机值,然后和加密文本一起返给解密端即可

意见反馈