AES 加密

算法 密钥
初始化向量
哈希认证类
哈希认证值
标签认证 
编码方式 

密钥可以为空(等同于不加密,只作编码形式转换),若填写,最大长度分别是 128÷8=16、192÷8=24、256÷8=32 个字节,超过会被截断,并不会增强安全性。

普通用户:算法自动生成初始化向量(IV)或随机数(nonce),待加密完成后与密文拼接输出。解密时则自动解析出 IV 或 conce 后再完成解密。
专业用户:自行输入各项参数进行加解密,加密时分别输出各项值。加密时若不填写 IV,则由算法自动生成。编码方式是指输入或输出初始化向量、认证消息、密文时使用的编码。哈希认证用于检查密文是否被篡改,可以不使用。标签认证属于AEAD加密模式的认证码,加密时由算法生成,解密时必填。

若分块需要填充,采用PKCS#7方式。


AES 是英文“Advanced Encryption Standard”的缩写,意为“高级加密标准”,由美国国家标准技术研究所(NIST)批准的对称加密算法。NIST 在 1997~2000 年间进行了一次公开的选拔竞赛,希望选择一个被称为 AES 的加密标准,用于替代 DES 加密(Data Encryption Standard,意为“数据加密标准”)。

经过甄选,比利时密码学家 Joan Daemen 和 Vincent Rijmen 所设计的 Rijndael 加密法被选中,成为 AES 加密算法。2001年,NIST 宣布,AES 被批准为 FIPS PUB 197 规范。

但是,Rijndael 与 AES 的官方 FIPS-197 规范之间存在一些差异。Rijndael 允许密钥和块大小在 128、160、192、224、256 几个数值中选择,并且密钥大小不必与块大小匹配。而 AES 的 FIPS-197 规范中规定的块大小必须始终为 128 位,而密钥大小可以是 128、192 或 256 位。因此,AES-128、AES-192 和 AES-256 实际上是:

  密钥大小(位) 块大小(位)
AES-128 128 128
AES-192 192 128
AES-256 256 128

注:位,指二进制中的一个位,即比特(bit)。

加密模式简述

ECB:电码本模式,将明文分块,使用相同密钥加密每个块;加解密速度快,安全性差,本页不加入此算法。

CBC:密文分组链接模式,分块加密。初始向量(IV)与第一个明文块异或计算(XOR),然后通过算法加密出第一个密文块;第一个密文块与第二个明文块异或计算(XOR),然后通过算法加密出第二个密文块……,如此像链条一样将密文链接在一起。CBC模式安全性高于ECB,是SSL采用的模式之一,已过时。

CFB:密文反馈模式,与CBC模式类似,但顺序不同。初始向量(IV)通过算法加密,然后与第一个明文块异或计算(XOR)得到第一个密文块;第一个密文块通过算法加密,然后与第二个明文块异或计算(XOR)得到第二个密文块……

CTR:计数器模式,通过累加的计数器加密获得每个明文块对应的密钥,然后用密钥与明文块异或计算(XOR)得到密文块。

OFB:输出反馈模式,与CFB非常相似。不同的是,与下一个明文块异或计算的不是上一个密文块,而是上一个算法加密输出。

XTS:此模式加密需要两倍长度的密钥。即AES-128-XTS需要256位(32字节)的密钥输入,以实现128位安全性,而AES-256-XTS需要512位(64字节)的密钥,实现256位安全性。例如,输入512位密钥,算法将其分为两个256位密钥,一个用于明文块加密,一个用于调整tweak。

CCM:带CBC-MAC认证的计数器模式,AEAD加密技术的一种,加密的同时提供认证功能,以保护数据的完整性,解密时需有标签认证数据方可完成。

GCM:Galois(伽罗瓦)计数器模式,也采用AEAD加密技术,使用哈希函数(GHASH)对密文进行完整性校验。TLS广泛采用这一方式加密通信数据。

OCB:在CCM和GCM模式基础上改进而来,具有更好的性能。

QQXIUZI.CN 千千秀字