AES 加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为 128、192、256,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,AES 标准用来替代原先的 DES,已经被多方分析且广为全世界所使用。
A–>(通过 K 加密)–>B–>(通过 K 解密)–>A
AES 加解密涉及到的模式(如 CBC、ECB 等)、偏移量和填充等, 需要查阅资料。
AES 对称加密算法。
AES 是基于数据块的加密方式,每次处理的数据是一块(16 字节),当数据不是 16 字节的倍数时自动填充 OR 手动填充(填充方式取决于使用哪种填充方式)。
支持的模式包括:
补码方式包括:NoPadding,PKCS5Padding,ISO10126Padding;
补码方式的选择依据解码端,例如 OC 解码需要使用 noPadding,crypto-js 解码需要使用 PKCS5Padding
加密内容必须为 16 的倍数,在 PKCS5Padding、ISO10126Padding 填充模式下会自动补位,在 noPadding 填充模式下需要自己进行补位;
注意:如果结合服务端加密内容使用 crypto-js 进行解密,无需进行 BASE64 解码
Oracle JDK 7(经过测试),AES 的默认密码为 AES / ECB / PKCS5Padding Java 中 AES 加密与解密默认使用 AES/ECB/PKCS5Padding 模式
查到资料说是 java AES 的默认密码为 AES/ECB/PKCS5Padding,但是试了不行,写成 AES 不加后面的 ECB/PKCS5Padding。
加解密需要设置 IV