加密工具类

使用基于Cipher类 完成加密 解密的操作

关于此类的文档

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
package com.vshow.control.tool;



import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.IOException;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.security.SecureRandom;

public class DesUtil {


private final static String DES = "DES";

//key
public static String keyStatic="11123331";
/**
* @param args
* @throws Exception
* @throws IOException
*/
public static void main(String[] args) throws IOException, Exception {

// TODO Auto-generated method stub
//String key="w!(*^!@";
//String encStr=encryptExe("MYp0A9xp1WA=");
//System.out.println("加密:"+encStr.trim());
//System.out.println("字符串长度:"+encStr.length());
//System.out.println("解密:"+decryptExe(encStr.trim()));
//System.out.println(decrypt("MYp0A9xp1WA=","jP0yaKGupQ177eGUrOPyOmgRclF5UJokx/Lzy5S9SQTpyZZOQotMRA=="));
//System.out.println(encrypt("10","jP0yaKGupQ177eGUrOPyOmgRclF5UJokx/Lzy5S9SQTpyZZOQotMRA=="));

String encStr=encrypt("root",keyStatic);
System.out.println("加密:"+encStr);
System.out.println("解密:"+decrypt(encStr,keyStatic));

//String data="{'code':'100000','dPassword':'212dba63ad5a085c974c08162e244c71','netCount':'0','surCount':'0'}";

//String key="11123331";

//String enData=encrypt(data,key);

//System.out.println(enData);

//String deData=decrypt("6Bqzt9v/KxfUcypNm9e5a4l4QIVlkydWzbNiIZMZKJau4Qoze44USnJHdO8SXD5tPgvhRwIOMgntITNk86vTM6m/HBb3hXaV/Hvehl9tUGk=","17453261");

//System.out.println(deData);

}


/***
* 加密exe
* @param key
* @return
* @throws InterruptedException
*/
public static String encryptExe(String key) throws InterruptedException{
String cmdd ="cmd /c "+ Constant.EXE + File.separator+"e.exe "+key;
BufferedInputStream br =null;
BufferedOutputStream br2 =null;
try{

Process p = Runtime.getRuntime().exec(cmdd);

br = new BufferedInputStream(p.getInputStream());

br2 = new BufferedOutputStream(p.getOutputStream());

int ch;

StringBuffer text = new StringBuffer();

while ((ch = br.read()) != -1) {
text.append((char) ch);
}

br.close();

return text.toString();

} catch (IOException e) {
e.printStackTrace();
}
return "";
}

/***
* 解密
*/
public static String decryptExe(String data){

String cmdd ="cmd /c "+ Constant.EXE + File.separator+"d.exe "+data;
BufferedInputStream br =null;
BufferedOutputStream br2 =null;

try{

Process p = Runtime.getRuntime().exec(cmdd);
br = new BufferedInputStream(p.getInputStream());
br2 = new BufferedOutputStream(p.getOutputStream());
int ch;
StringBuffer text = new StringBuffer();

while ((ch = br.read()) != -1) {
text.append((char) ch);
}

br.close();
br2.close();
return text.toString();



} catch (IOException e) {
e.printStackTrace();
}
return "";


}
/**
* 根据键值进行加密
*/
public static String encrypt(String data, String key) throws Exception {
byte[] bt = encrypt(data.getBytes("utf-8"), key.getBytes());
String strs = new BASE64Encoder().encode(bt);
return strs;
}
/**
* 根据键值进行解密
*/
public static String decrypt(String data, String key) throws IOException,
Exception {
if (data == null)
return null;
BASE64Decoder decoder = new BASE64Decoder();
byte[] buf = decoder.decodeBuffer(data);
byte[] bt = decrypt(buf, key.getBytes());
return new String(bt,"utf-8");
}
/**
* 根据键值进行加密
*/
private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
Cipher cipher = cipherInit(data, key, Cipher.ENCRYPT_MODE);
return cipher.doFinal(data);
}
/**
* 根据键值进行解密
*/
private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
Cipher cipher = cipherInit(data, key, Cipher.DECRYPT_MODE);
return cipher.doFinal(data);
}
private static Cipher cipherInit(byte[] data, byte[] key,int cipherValue) throws Exception {

/** 生成一个可信任的随机数源**/
SecureRandom sr = new SecureRandom();
/** 从原始密钥数据创建DESKeySpec对象**/
DESKeySpec dks = new DESKeySpec(key);
/** 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象**/
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);

SecretKey securekey = keyFactory.generateSecret(dks);
/** Cipher对象实际完成加密或解密操作**/
Cipher cipher = Cipher.getInstance(DES);
/**用密钥初始化Cipher对象**/
cipher.init(cipherValue, securekey, sr);
return cipher;
}

}