2
2
### MD5加密
3
3
``` java
4
4
/**
5
- * 一个byte转为2个hex字符
6
- */
7
- public static String bytes2Hex(byte [] src) {
8
- char [] res = new char [src. length * 2 ];
9
- final char hexDigits[] = {' 0' , ' 1' , ' 2' , ' 3' , ' 4' , ' 5' , ' 6' , ' 7' , ' 8' , ' 9' , ' A' , ' B' , ' C' , ' D' , ' E' , ' F' };
10
- for (int i = 0 , j = 0 ; i < src. length; i++ ) {
11
- res[j++ ] = hexDigits[src[i] >>> 4 & 0x0f ];
12
- res[j++ ] = hexDigits[src[i] & 0x0f ];
13
- }
14
- return new String (res);
5
+ * MD5加密
6
+ *
7
+ * @param data 明文字符串
8
+ * @return 密文
9
+ */
10
+ public static String getMD5(String data) {
11
+ return getMD5(data. getBytes());
15
12
}
16
13
17
14
/**
18
- * MD5加密
19
- *
20
- * @param data 明文
21
- * @return 密文
22
- */
23
- public static String getMD5(String data) {
24
- return TextUtils . isEmpty(data) ? " " : getMD5(data. getBytes());
15
+ * MD5加密
16
+ *
17
+ * @param data 明文字符串
18
+ * @param salt 盐
19
+ * @return 密文
20
+ */
21
+ public static String getMD5(String data, String salt) {
22
+ return bytes2Hex(encryptMD5((data + salt). getBytes()));
25
23
}
26
-
24
+
27
25
/**
28
- * MD5加密
29
- *
30
- * @param data 明文字节数组
31
- * @return 密文
32
- */
26
+ * MD5加密
27
+ *
28
+ * @param data 明文字节数组
29
+ * @return 密文
30
+ */
33
31
public static String getMD5(byte [] data) {
34
- if (data. length > 0 ) {
35
- return bytes2Hex(encryptMD5(data));
36
- }
37
- return " " ;
32
+ return bytes2Hex(encryptMD5(data));
38
33
}
39
-
34
+
40
35
/**
41
- * MD5加密
42
- *
43
- * @param data 明文字节数组
44
- * @return 密文字节数组
45
- */
36
+ * MD5加密
37
+ *
38
+ * @param data 明文字节数组
39
+ * @param salt 盐字节数组
40
+ * @return 密文
41
+ */
42
+ public static String getMD5(byte [] data, byte [] salt) {
43
+ byte [] dataSalt = new byte [data. length + salt. length];
44
+ System . arraycopy(data, 0 , dataSalt, 0 , data. length);
45
+ System . arraycopy(salt, 0 , dataSalt, data. length, salt. length);
46
+ return bytes2Hex(encryptMD5(dataSalt));
47
+ }
48
+
49
+ /**
50
+ * MD5加密
51
+ *
52
+ * @param data 明文字节数组
53
+ * @return 密文字节数组
54
+ */
46
55
public static byte [] encryptMD5(byte [] data) {
47
- if (data. length > 0 ) {
48
- try {
49
- MessageDigest md = MessageDigest . getInstance(" MD5" );
50
- md. update(data);
51
- return md. digest();
52
- } catch (NoSuchAlgorithmException e) {
53
- e. printStackTrace();
54
- }
56
+ try {
57
+ MessageDigest md = MessageDigest . getInstance(" MD5" );
58
+ md. update(data);
59
+ return md. digest();
60
+ } catch (NoSuchAlgorithmException e) {
61
+ e. printStackTrace();
55
62
}
56
- return null ;
63
+ return new byte [ 0 ] ;
57
64
}
58
-
59
-
65
+
60
66
/**
61
- * 获取文件的MD5校验码
62
- *
63
- * @param filePath 文件路径
64
- * @return 文件的MD5校验码
65
- */
67
+ * 获取文件的MD5校验码
68
+ *
69
+ * @param filePath 文件路径
70
+ * @return 文件的MD5校验码
71
+ */
66
72
public static String getMD5File(String filePath) {
67
- if (! TextUtils . isEmpty(filePath)) {
68
- FileInputStream in = null ;
69
- try {
70
- MessageDigest md = MessageDigest . getInstance(" MD5" );
71
- in = new FileInputStream (filePath);
72
- int len;
73
- byte [] buffer = new byte [1024 ];
74
- while ((len = in. read(buffer)) != - 1 ) {
75
- md. update(buffer, 0 , len);
76
- }
77
- return bytes2Hex(md. digest());
78
- } catch (NoSuchAlgorithmException | IOException e) {
79
- e. printStackTrace();
80
- } finally {
81
- if (in != null ) {
82
- try {
83
- in. close();
84
- } catch (IOException ignored) {
85
- }
73
+ FileInputStream in = null ;
74
+ try {
75
+ MessageDigest md = MessageDigest . getInstance(" MD5" );
76
+ in = new FileInputStream (filePath);
77
+ int len;
78
+ byte [] buffer = new byte [1024 ];
79
+ while ((len = in. read(buffer)) != - 1 ) {
80
+ md. update(buffer, 0 , len);
81
+ }
82
+ return bytes2Hex(md. digest());
83
+ } catch (NoSuchAlgorithmException | IOException e) {
84
+ e. printStackTrace();
85
+ } finally {
86
+ if (in != null ) {
87
+ try {
88
+ in. close();
89
+ } catch (IOException ignored) {
86
90
}
87
91
}
88
92
}
@@ -93,43 +97,52 @@ public static String getMD5File(String filePath) {
93
97
### SHA加密
94
98
```
95
99
/**
96
- * SHA加密
97
- *
98
- * @param data 明文
99
- * @return 密文
100
- */
100
+ * SHA加密
101
+ *
102
+ * @param data 明文字符串
103
+ * @return 密文
104
+ */
101
105
public static String getSHA(String data) {
102
- return TextUtils.isEmpty(data) ? "" : getSHA(data.getBytes());
106
+ return getSHA(data.getBytes());
103
107
}
104
-
108
+
105
109
/**
106
- * SHA加密
107
- *
108
- * @param data 明文字节数组
109
- * @return 密文
110
- */
110
+ * SHA加密
111
+ *
112
+ * @param data 明文字节数组
113
+ * @return 密文
114
+ */
111
115
public static String getSHA(byte[] data) {
112
- if (data.length > 0) {
113
- return bytes2Hex(encryptSHA(data));
114
- }
115
- return "";
116
+ return bytes2Hex(encryptSHA(data));
116
117
}
117
-
118
+
118
119
/**
119
- * SHA加密
120
- * @param data 明文字节数组
121
- * @return 密文字节数组
122
- */
120
+ * SHA加密
121
+ *
122
+ * @param data 明文字节数组
123
+ * @return 密文字节数组
124
+ */
123
125
public static byte[] encryptSHA(byte[] data) {
124
- if (data.length > 0) {
125
- try {
126
- MessageDigest md = MessageDigest.getInstance("SHA");
127
- md.update(data);
128
- return md.digest();
129
- } catch (NoSuchAlgorithmException e) {
130
- e.printStackTrace();
131
- }
126
+ try {
127
+ MessageDigest md = MessageDigest.getInstance("SHA");
128
+ md.update(data);
129
+ return md.digest();
130
+ } catch (NoSuchAlgorithmException e) {
131
+ e.printStackTrace();
132
+ }
133
+ return new byte[0];
134
+ }
135
+
136
+ /**
137
+ * 一个byte转为2个hex字符
138
+ */
139
+ public static String bytes2Hex(byte[] src) {
140
+ char[] res = new char[src.length * 2];
141
+ final char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
142
+ for (int i = 0, j = 0; i < src.length; i++) {
143
+ res[j++] = hexDigits[src[i] >>> 4 & 0x0f];
144
+ res[j++] = hexDigits[src[i] & 0x0f];
132
145
}
133
- return null ;
146
+ return new String(res) ;
134
147
}
135
148
```
0 commit comments