Skip to content

Commit 7f48af5

Browse files
committed
加密新增MD5盐加密,完善NetworkUtils
1 parent 45a79e4 commit 7f48af5

File tree

6 files changed

+332
-241
lines changed

6 files changed

+332
-241
lines changed

README.md

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Android开发人员不得不收集的代码(不断更新)
1+
# Android开发人员不得不收集的代码(持续更新中)
22
为方便查找,已进行大致归类,其目录如下所示:
33
> - [App相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_app.md)[AppUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/AppUtils.java)
44
> - 安装指定路径下的Apk *installApp*
@@ -30,12 +30,13 @@
3030
3131
> - [网络相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_network.md)[NetworkUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/NetworkUtils.java)
3232
> - 打开网络设置界面 *openWirelessSettings*
33-
> - 判断是否网络连接 *isConnected*
33+
> - 判断网络是否可用 *isAvailable*
34+
> - 判断网络是否连接 *isConnected*
35+
> - 判断网络是否是4G *is4G*
3436
> - 判断wifi是否连接状态 *isWifiConnected*
3537
> - 获取移动网络运营商名称 *getNetworkOperatorName*
3638
> - 获取移动终端类型 *getPhoneType*
37-
> - 获取连接的网络类型(2G,3G,4G) *getCurNetworkType*
38-
> - 获取当前手机的网络类型(WIFI,2G,3G,4G) *getNetWorkStatus*
39+
> - 获取当前的网络类型(WIFI,2G,3G,4G) *getNetWorkType* *getNetWorkTypeName*
3940
4041
> - [手机相关](https://github.com/Blankj/AndroidUtilCode/blob/master/about_phone.md)[PhoneUtils.java](https://github.com/Blankj/AndroidUtilCode/blob/master/androidframework/src/main/java/com/blankj/androidframework/utils/PhoneUtils.java)
4142
> - 判断设备是否是手机 *isPhone*
@@ -99,6 +100,7 @@
99100
#### 2016/08/02 新增隐藏状态栏,注释更加全面,工具类已封装,写的时候真的是一个一个测试过去的,宝宝心里苦
100101
#### 2016/08/03 修复在onCreate中获取view尺寸的bug,MD5和SHA的Bug修复完成(在此感谢ssyijiu)
101102
#### 2016/08/04 新增时间工具类(在此感谢yi520000给的补充),手机正则分简单和精确(在此感谢MIkeeJY),新增判断是否锁屏,注释使用<p>分段落,目录按首字母排序
103+
#### 2016/08/05 加密新增MD5盐加密,完善NetworkUtils
102104

103105

104106
##[关于Blankj](http://blankj.com/about)

about_encrypt.md

+111-98
Original file line numberDiff line numberDiff line change
@@ -2,87 +2,91 @@
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+
*/
3331
public 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+
*/
4655
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();
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+
*/
6672
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) {
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+
*/
101105
public 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+
*/
111115
public 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+
*/
123125
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];
132145
}
133-
return null;
146+
return new String(res);
134147
}
135148
```

0 commit comments

Comments
 (0)