22### MD5加密
33``` java
44/**
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());
1512}
1613
1714/**
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()));
2523}
26-
24+
2725/**
28- * MD5加密
29- *
30- * @param data 明文字节数组
31- * @return 密文
32- */
26+ * MD5加密
27+ *
28+ * @param data 明文字节数组
29+ * @return 密文
30+ */
3331public static String getMD5(byte [] data) {
34- if (data. length > 0 ) {
35- return bytes2Hex(encryptMD5(data));
36- }
37- return " " ;
32+ return bytes2Hex(encryptMD5(data));
3833}
39-
34+
4035/**
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+ */
4655public 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();
5562 }
56- return null ;
63+ return new byte [ 0 ] ;
5764}
58-
59-
65+
6066/**
61- * 获取文件的MD5校验码
62- *
63- * @param filePath 文件路径
64- * @return 文件的MD5校验码
65- */
67+ * 获取文件的MD5校验码
68+ *
69+ * @param filePath 文件路径
70+ * @return 文件的MD5校验码
71+ */
6672public 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) {
8690 }
8791 }
8892 }
@@ -93,43 +97,52 @@ public static String getMD5File(String filePath) {
9397### SHA加密
9498```
9599/**
96- * SHA加密
97- *
98- * @param data 明文
99- * @return 密文
100- */
100+ * SHA加密
101+ *
102+ * @param data 明文字符串
103+ * @return 密文
104+ */
101105public static String getSHA(String data) {
102- return TextUtils.isEmpty(data) ? "" : getSHA(data.getBytes());
106+ return getSHA(data.getBytes());
103107}
104-
108+
105109/**
106- * SHA加密
107- *
108- * @param data 明文字节数组
109- * @return 密文
110- */
110+ * SHA加密
111+ *
112+ * @param data 明文字节数组
113+ * @return 密文
114+ */
111115public static String getSHA(byte[] data) {
112- if (data.length > 0) {
113- return bytes2Hex(encryptSHA(data));
114- }
115- return "";
116+ return bytes2Hex(encryptSHA(data));
116117}
117-
118+
118119/**
119- * SHA加密
120- * @param data 明文字节数组
121- * @return 密文字节数组
122- */
120+ * SHA加密
121+ *
122+ * @param data 明文字节数组
123+ * @return 密文字节数组
124+ */
123125public 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];
132145 }
133- return null ;
146+ return new String(res) ;
134147}
135148```
0 commit comments