public final class UtilDES extends Object
对称加密,分组加密, 以64位为分组。64位明文输入,64位密文输出。秘钥长度64位
DES(Data Encryption Standard),分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。 在DES标准规范中,分组长度只能是64位,如果最后一段不够8个字节了,就需要用Padding来把这段数据填满8个字节。Padding: PKCS5、PKCS7、 NOPADDING、ISO10126Padding
PKCS5: 分组数据缺少几个字节,就在数据的末尾填充几个字节的几,比如缺少5个字节,就在末尾填充5个字节的5;
PKCS7: 分组数据缺少几个字节,就在数据的末尾填充几个字节的0,比如缺少7个字节,就在末尾填充7个字节的0;
NOPADDING: 不需要填充,也就是说数据的发送方肯定会保证最后一段数据也正好是16个字节
初始向量IV的作用是使加密更加安全可靠,我们使用AES加密时需要主动提供初始向量, 而且只需要提供一个初始向量就够了,后面每段数据的加密向量都是前面一段的密文。初始向量IV的长度规定为128位16个字节
ECB(Elecyronic Code Book,电子密码本模式)、CBC(Cipher Block Chaining,密码分组链接模式)、 CFB (Cipher FeedBack Mode加密反馈)、OFB(Output FeedBack,输出反馈),CTR(Counter ,计算器模式),我们一般使用的是CBC模式
ECB: ECB模式是最基本的加密模式,即仅仅使用明文和密钥来加密数据,相同的明文块会被加密成相同的密文块, 这样明文和密文的结构将是完全一样的,就会更容易被破解,相对来说不是那么安全,因此很少使用。
CBC: 而CBC模式则比ECB模式多了一个初始向量IV,加密的时候,第一个明文块会首先和初始向量IV做异或操作, 然后再经过密钥加密,然后第一个密文块又会作为第二个明文块的加密向量来异或,依次类推下去, 这样相同的明文块加密出的密文块就是不同的,明文的结构和密文的结构也将是不同的,因此更加安全,我们常用的就是CBC加密模式。
CFB: CFB的加密工作分为两部分:1、将一前段加密得到的密文再加密;2、将第1步加密得到的数据与当前段的明文异或。
OFB: OFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流, 再将密钥流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的。
| 构造器和说明 |
|---|
UtilDES() |
| 限定符和类型 | 方法和说明 |
|---|---|
static byte[] |
decrypt(byte[] content,
byte[] keyByte) |
static byte[] |
decrypt(byte[] content,
byte[] keyByte,
byte[] ivByte,
String model,
String padding) |
static byte[] |
decrypt(byte[] content,
byte[] keyByte,
String model) |
static byte[] |
encrypt(byte[] content,
byte[] keyByte) |
static byte[] |
encrypt(byte[] content,
byte[] keyByte,
byte[] ivByte,
String model,
String padding) |
public static byte[] decrypt(byte[] content,
byte[] keyByte,
byte[] ivByte,
String model,
String padding)
throws Exception
content - 内容keyByte - 秘钥model - 模式padding - 填充模式ivByte - 偏移量Exceptionpublic static byte[] encrypt(byte[] content,
byte[] keyByte,
byte[] ivByte,
String model,
String padding)
throws Exception
content - 内容keyByte - 秘钥model - 模式padding - 填充模式Exceptionpublic static byte[] encrypt(byte[] content,
byte[] keyByte)
throws Exception
content - 待加密信息keyByte - 秘钥Exceptionpublic static byte[] decrypt(byte[] content,
byte[] keyByte,
String model)
throws Exception
content - keyByte - model - ExceptionCopyright © 2019. All rights reserved.