您的位置:首页 > 其它

JCE中支持AES,支持的模式和填充方式

2016-03-21 19:39 190 查看
Java Cryptography Extension(JCE)是一组包,它们提供用于加密、密钥生成和协商以及
Message Authentication Code(MAC)算法的框架和实现。它提供对对称、不对称、块和流密码的加密支持,它还支持安全流和密封的对象。它不对外出口,用它开发完成封装后将无法调用。

JCE中AES支持五中模式:CBC,CFB,ECB,OFB,PCBC;支持三种填充:NoPadding,PKCS5Padding,ISO10126Padding。不支持SSL3Padding。不支持“NONE”模式。

其中AES/ECB/NoPadding和我现在使用的AESUtil得出的结果相同(在16的整数倍情况下)。
不带模式和填充来获取AES算法的时候,其默认使用ECB/PKCS5Padding。

算法/模式/填充 16字节加密后数据长度 不满16字节加密后长度
AES/CBC/NoPadding 16 不支持

AES/CBC/PKCS5Padding 32 16

AES/CBC/ISO10126Padding 32 16

AES/CFB/NoPadding 16 原始数据长度

AES/CFB/PKCS5Padding 32 16

AES/CFB/ISO10126Padding 32 16

AES/ECB/NoPadding 16 不支持

AES/ECB/PKCS5Padding 32 16

AES/ECB/ISO10126Padding 32 16

AES/OFB/NoPadding 16 原始数据长度

AES/OFB/PKCS5Padding 32 16

AES/OFB/ISO10126Padding 32 16

AES/PCBC/NoPadding 16 不支持

AES/PCBC/PKCS5Padding 32 16

AES/PCBC/ISO10126Padding 32 16

可以看到,在原始数据长度为16的整数倍时,假如原始数据长度等于16*n,则使用NoPadding时加密后数据长度等于16*n,其它情况下加密数据长度等于16*(n+1)。在不足16的整数倍的情况下,假如原始数据长度等于16*n+m[其中m小于16],除了NoPadding填充之外的任何方式,加密数据长度都等于16*(n+1);NoPadding填充情况下,CBC、ECB和PCBC三种模式是不支持的,CFB、OFB两种模式下则加密数据长度等于原始数据长度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: