1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
/* DES 加密、解密 */
/**
* DES 加密
*
* @param data
* 明文
* @return
* @throws Exception
*/
public static String DESEncrypt(String data) throws Exception {
try {
// 生成一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密钥数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(KEY.getBytes());
// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance("DES");
// 用密钥初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
// 加密数据
String strs = new BASE64Encoder().encodeBuffer(cipher.doFinal(data.getBytes()));
return strs;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* DES 解密
*
* @param data
* 密文
* @return 明文
* @throws Exception
*/
public
static
String DESDecrypt(String data)
throws
Exception, Exception {
if
(data ==
null
)
return
null
;
byte
[] buf =
new
BASE64Decoder().decodeBuffer(data);
// 生成一个可信任的随机数源
SecureRandom sr =
new
SecureRandom();
// 从原始密钥数据创建DESKeySpec对象
DESKeySpec dks =
new
DESKeySpec(KEY.getBytes());
// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(
"DES"
);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance(
"DES"
);
// 用密钥初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
return
new
String(cipher.doFinal(buf));
}
|
上面代码在测试的时候,解密出现了乱码,
建议采用自己对base64进行编码格式控制,这样就能够保证加密,解密格式一致,不会出现乱码
。
本文转自建波李 51CTO博客,原文链接:http://blog.51cto.com/jianboli/1902082,如需转载请自行联系原作者