|
1 |
| -# 加解密相关 |
2 |
| -### MD5加密 |
| 1 | +# 编码解码相关 |
3 | 2 | ``` java
|
4 |
| -/** |
5 |
| - * MD5加密 |
6 |
| - * |
7 |
| - * @param data 明文字符串 |
8 |
| - * @return 密文 |
9 |
| - */ |
10 |
| -public static String getMD5(String data) { |
11 |
| - return getMD5(data.getBytes()); |
12 |
| -} |
| 3 | +import java.io.UnsupportedEncodingException; |
| 4 | +import java.net.URLDecoder; |
| 5 | +import java.net.URLEncoder; |
13 | 6 |
|
14 | 7 | /**
|
15 |
| - * MD5加密 |
16 |
| - * |
17 |
| - * @param data 明文字符串 |
18 |
| - * @param salt 盐 |
19 |
| - * @return 密文 |
| 8 | + * <pre> |
| 9 | + * author: Blankj |
| 10 | + * blog : http://blankj.com |
| 11 | + * time : 2016/8/7 |
| 12 | + * desc : 编码解码相关工具类 |
| 13 | + * </pre> |
20 | 14 | */
|
21 |
| -public static String getMD5(String data, String salt) { |
22 |
| - return bytes2Hex(encryptMD5((data + salt).getBytes())); |
23 |
| -} |
| 15 | +public class EncodeUtils { |
24 | 16 |
|
25 |
| -/** |
26 |
| - * MD5加密 |
27 |
| - * |
28 |
| - * @param data 明文字节数组 |
29 |
| - * @return 密文 |
30 |
| - */ |
31 |
| -public static String getMD5(byte[] data) { |
32 |
| - return bytes2Hex(encryptMD5(data)); |
33 |
| -} |
34 |
| - |
35 |
| -/** |
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 |
| -} |
| 17 | + private EncodeUtils() { |
| 18 | + throw new UnsupportedOperationException("u can't fuck me..."); |
| 19 | + } |
48 | 20 |
|
49 |
| -/** |
50 |
| - * MD5加密 |
51 |
| - * |
52 |
| - * @param data 明文字节数组 |
53 |
| - * @return 密文字节数组 |
54 |
| - */ |
55 |
| -public static byte[] encryptMD5(byte[] data) { |
56 |
| - try { |
57 |
| - MessageDigest md = MessageDigest.getInstance("MD5"); |
58 |
| - md.update(data); |
59 |
| - return md.digest(); |
60 |
| - } catch (NoSuchAlgorithmException e) { |
61 |
| - e.printStackTrace(); |
| 21 | + /** |
| 22 | + * 以UTF-8编码字符串 |
| 23 | + * <p>若想自己指定字符集,可以使用encode(String string, String charset)方法</p> |
| 24 | + * |
| 25 | + * @param string 要编码的字符 |
| 26 | + * @return 编码为UTF-8的字符串 |
| 27 | + */ |
| 28 | + public static String encodeUTF8(String string) { |
| 29 | + return encode(string, "UTF-8"); |
62 | 30 | }
|
63 |
| - return new byte[0]; |
64 |
| -} |
65 | 31 |
|
66 |
| -/** |
67 |
| - * 获取文件的MD5校验码 |
68 |
| - * |
69 |
| - * @param filePath 文件路径 |
70 |
| - * @return 文件的MD5校验码 |
71 |
| - */ |
72 |
| -public static String getMD5File(String filePath) { |
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) { |
90 |
| - } |
| 32 | + /** |
| 33 | + * 字符编码 |
| 34 | + * <p>若系统不支持指定的编码字符集,则直接将string原样返回</p> |
| 35 | + * |
| 36 | + * @param string 要编码的字符 |
| 37 | + * @param charset 字符集 |
| 38 | + * @return 编码为字符集的字符串 |
| 39 | + */ |
| 40 | + public static String encode(String string, String charset) { |
| 41 | + try { |
| 42 | + return URLEncoder.encode(string, charset); |
| 43 | + } catch (UnsupportedEncodingException e) { |
| 44 | + return string; |
91 | 45 | }
|
92 | 46 | }
|
93 |
| - return ""; |
94 |
| -} |
95 |
| -``` |
96 | 47 |
|
97 |
| -### SHA加密 |
98 |
| -``` |
99 |
| -/** |
100 |
| - * SHA加密 |
101 |
| - * |
102 |
| - * @param data 明文字符串 |
103 |
| - * @return 密文 |
104 |
| - */ |
105 |
| -public static String getSHA(String data) { |
106 |
| - return getSHA(data.getBytes()); |
107 |
| -} |
108 |
| -
|
109 |
| -/** |
110 |
| - * SHA加密 |
111 |
| - * |
112 |
| - * @param data 明文字节数组 |
113 |
| - * @return 密文 |
114 |
| - */ |
115 |
| -public static String getSHA(byte[] data) { |
116 |
| - return bytes2Hex(encryptSHA(data)); |
117 |
| -} |
118 |
| -
|
119 |
| -/** |
120 |
| - * SHA加密 |
121 |
| - * |
122 |
| - * @param data 明文字节数组 |
123 |
| - * @return 密文字节数组 |
124 |
| - */ |
125 |
| -public static byte[] encryptSHA(byte[] data) { |
126 |
| - try { |
127 |
| - MessageDigest md = MessageDigest.getInstance("SHA"); |
128 |
| - md.update(data); |
129 |
| - return md.digest(); |
130 |
| - } catch (NoSuchAlgorithmException e) { |
131 |
| - e.printStackTrace(); |
| 48 | + /** |
| 49 | + * 以UTF-8解码字符串 |
| 50 | + * <p>若想自己指定字符集,可以使用# {decode(String string, String charset)}方法</p> |
| 51 | + * |
| 52 | + * @param string 要解码的字符 |
| 53 | + * @return 解码为UTF-8的字符串 |
| 54 | + */ |
| 55 | + public static String decodeUTF8(String string) { |
| 56 | + return decode(string, "UTF-8"); |
132 | 57 | }
|
133 |
| - return new byte[0]; |
134 |
| -} |
135 | 58 |
|
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]; |
| 59 | + /** |
| 60 | + * 字符解码 |
| 61 | + * <p>若系统不支持指定的解码字符集,则直接将string原样返回</p> |
| 62 | + * |
| 63 | + * @param string 要解码的字符 |
| 64 | + * @param charset 字符集 |
| 65 | + * @return 解码为字符集的字符串 |
| 66 | + */ |
| 67 | + public static String decode(String string, String charset) { |
| 68 | + try { |
| 69 | + return URLDecoder.decode(string, charset); |
| 70 | + } catch (UnsupportedEncodingException e) { |
| 71 | + return string; |
| 72 | + } |
145 | 73 | }
|
146 |
| - return new String(res); |
147 | 74 | }
|
148 | 75 | ```
|
0 commit comments