加密模式、填充模式

加密模式

ECB:电子密码本(将文本分块加密),

使用同一个key

可以并行处理,速度块,

数据安全性比较弱

 

CBC:密码快链接

每个明文块先与前一个密文块进行异或处理后,在进行加密

每个密文块依赖于前面的明文块(IV向量)

速度慢

安全

=========

填充模式

NoPadding 不填充(什么都不做)

在DES加密算法下,要求原文长度必须是8byte的整数倍

在AES加密算法下,要求原文长度必须是16byte的整数倍

 

PKCS5Padding

数据块的大小为8位,不够就补足

默认情况下 加密模式和填充模式为:ECB/PKCS5Padding

如果使用CBC模式,在初始化Cipher对象时,需要增加参数,初始化向量IV:

IVParameterSpec iv=new IvParemeterSpec(key.getBytes());

 

=======

String transformation = "DES";

加密:l2A+Pb0g5xA=

 

String transformation = "DES/ECB/PKCS5Padding";

加密:l2A+Pb0g5xA=

 

String transformation = "DES/CBC/PKCS5Padding";

java.security.InvalidKeyException:

 

String transformation = "DES/CBC/PKCS5Padding";

IvParameterSpec iv = new IvParameterSpec(key.getBytes());

cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, iv);

cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, iv);

加密:bQNG2dNFS/U=

 

String transformation = "DES/CBC/NoPadding";

javax.crypto.IllegalBlockSizeException: Input length not multiple of 8 bytes

如果使用不填充,需要原文为8字节整数倍,否则报错(iv向量的key也必须是8字节)

 

String input = "科学12"

String key = "12345678";

String transformation = "DES/CBC/NoPadding";

加密:zpanGX+NZis=

 

posted @ 2020-07-05 00:13  工设091  阅读(517)  评论(0编辑  收藏  举报