AES简介
一、介绍
AES(Advanced Encryption Standard)是美国联邦政府采用的一种区块加密标准,用来代替 DES 的。它属于对称加密。
AES支持三种密钥长度:128bit、192bit和256bit。
AES的区块长度固定为 128bit!
它具有五种加密模式,分别是:
- ECB:电码本模式(Electronic Codebook Book)
- CBC:密码分组连接模式(Cipher Block Chaing)
- CTR:计算机模式(Counter)
- CFB:密码反馈模式(Cipher Feedback)
- OFB:输出反馈模式(Output Feedback)
Java11对这五种加密模式都支持,并且默认的是 ECB 模式。
二、加密过程简介
1、AES的分组加密
AES算法在对明文加密的时候,并不是把整个明文一股脑的加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。
这些明文块经过AES加密器复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密的结果。
2、填充方式
假如一段明文长度是196bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding)。
几种典型的填充方式:
- NoPadding:不做任何填充,但是要求明文必须是16字节(128bit)的整数倍。
- ZeroPadding
- PKCS5Padding
- PKCS7Padding
Java11支持的填充方式:
- NoPadding
- PKCS1Padding
- PKCS5Padding
- ISO10126Padding
- OAEPPadding, OAEPWith<digest>And<mgf>Padding
- SSL3Padding
Java11默认的是 PKCS5Padding 填充方式。
三、总结
Java11中如果使用 AES 进行加密的话,默认使用的是 AES/ECB/PKCS5PADDING。
注意:加密模式和填充方式只是在加密的时候使用,与 AES 的密钥生成没有关系!!!
------------------------------我是博客签名------------------------------
座右铭:不要因为知识简单就忽略,不积跬步无以至千里。
版权声明:自由转载-非商用-非衍生-保持署名。
本作品采用知识共享署名 4.0 国际许可协议进行许可。
----------------------------------------------------------------------
座右铭:不要因为知识简单就忽略,不积跬步无以至千里。
版权声明:自由转载-非商用-非衍生-保持署名。
本作品采用知识共享署名 4.0 国际许可协议进行许可。
----------------------------------------------------------------------