这种填充方式中,填充字符串的第一个字节数是0x80,后面的每个字节是0x00。假定块长度为8,原文数据长度为9或者为8的整数倍,则 填充字符串如下:
原文数据1: FF FF FF FF FF FF FF FF FF
填充后数据1:FF FF FF FF FF FF FF FF FF 80 00 00 00 00 00 00
==========================================================
原文数据2:FF FF FF FF FF FF FF FF
填充后数据2:FF FF FF FF FF FF FF FF 80 00 00 00 00 00 00 00
3.填充数据的最后一个字节为填充字节序列的长度
这种填充方式中,填充字符串的最后一个字节为该序列的长度,而前面的字节可以是0x00,也可以是随机的字节序列。假定块长度为8,原文数据长度为9或者为8的整数倍,则填充字符串如下:
原文数据1:FF FF FF FF FF FF FF FF FF
填充后数据1:FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 07或FF FF FF FF FF FF FF FF FF 0A B0 0C 08 05 09 07
===============================================================================
原文数据2:FF FF FF FF FF FF FF FF
填充后数据2:FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 08或FF FF FF FF FF FF FF FF 80 06 AB EA 03 02 01 08
4.填充数据为空格
这种填充方式中,填充字符串的每个字节为空格对应的字节数0x20。假定块长度为8,原文数据长度为9或者为8的整数倍,则填充字符串如下:
原文数据1: FF FF FF FF FF FF FF FF FF
填充后数据1:FF FF FF FF FF FF FF FF FF 20 20 20 20 20 20 20
===============================================================================
原文数据2:FF FF FF FF FF FF FF FF
填充后数据2:FF FF FF FF FF FF FF FF 20 20 20 20 20 20 20 20
5.填充数据为0x00
这种填充方式中,填充字符串的每个字节为0x00。假定块长度为8,原文数据长度为9或者8的整数倍,则填充字符串如下:
原文数据1: FF FF FF FF FF FF FF FF FF
填充后数据1:FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00
===============================================================================
原文数据2:FF FF FF FF FF FF FF FF
填充后数据2:FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00
transformation小结SunJCE Provider支持的Cipher的部分详细信息如下:
algorithm(算法) mode(工作模式) padding(填充模式)AES EBC、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128等 NoPadding、ISO10126Padding、PKCS5Padding
AESWrap EBC NoPadding
ARCFOUR EBC NoPadding
Blowfish、DES、DESede、RC2 EBC、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128等 NoPadding、ISO10126Padding、PKCS5Padding
DESedeWrap CBC NoPadding
PBEWithMD5AndDES、PBEWithMD5AndTripleDES、PBEWithSHA1AndDESede、PBEWithSHA1AndRC2_40 CBC PKCS5Padding
RSA ECB、NONE NoPadding、PKCS1Padding等
Java原生支持的Padding(Cipher)汇总如下:
填充模式 描述NoPadding 不采用填充模式
ISO10126Padding XML加密语法和处理文档中有详细描述
OAEPPadding, OAEPWith<digest>And<mgf>Padding PKCS1中定义的最优非对称加密填充方案,digest代表消息摘要类型,mgf代表掩码生成函数,例如:OAEPWithMD5AndMGF1Padding或者OAEPWithSHA-512AndMGF1Padding
PKCS1Padding PKCS1,RSA算法使用
PKCS5Padding PKCS5,RSA算法使用
SSL3Padding 见SSL Protocol Version 3.0的定义
其他Padding需要第三方Provider提供。
Cipher的所有公有方法 Cipher的七个主要公有属性1、ENCRYPT_MODE,整型值1,加密模式,用于Cipher的初始化。
2、DECRYPT_MODE,整型值2,解密模式,用于Cipher的初始化。
3、WRAP_MODE,整型值3,包装密钥模式,用于Cipher的初始化。
4、UNWRAP_MODE,整型值4,解包装密钥模式,用于Cipher的初始化。
5、PUBLIC_KEY,整型值1,解包装密钥模式下指定密钥类型为公钥。
6、PRIVATE_KEY,整型值2,解包装密钥模式下指定密钥类型为私钥。