博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DES 加密、解密
阅读量:5962 次
发布时间:2019-06-19

本文共 1772 字,大约阅读时间需要 5 分钟。

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,如需转载请自行联系原作者
你可能感兴趣的文章
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
HDOJ_ACM_Rescue
查看>>
笔记纪录
查看>>
九、oracle 事务
查看>>
Git - 操作指南
查看>>
正则表达式的贪婪与非贪婪模式
查看>>
SqlServer存储过程调用接口
查看>>
DOM
查看>>
通过jQuery.support看javascript中的兼容性问题
查看>>
NYOJ-取石子
查看>>
AngularJS
查看>>
《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
查看>>
List与数组的相互转换
查看>>
Computer Science Theory for the Information Age-4: 一些机器学习算法的简介
查看>>
socketserver模块使用方法
查看>>
json模块
查看>>
各型号英特尔CUP的功率
查看>>
scanf()中的%c 不能正常输入的问题
查看>>
常见排序算法及对应的时间复杂度和空间复杂度
查看>>
业界 | 在德州叫一辆自动驾驶车,Drive.ai安排了7辆无人车展开真实试验
查看>>