彻底告别加解密模块代码拷贝(2)

这种填充方式中,填充字符串的第一个字节数是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,解包装密钥模式下指定密钥类型为私钥。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b5e4d8f6f0ddf4f7771d5bbfc73289c8.html