在Android中需要对各种数据进行加密的操作,比如用户短信备份的数据加密、用户账户登陆的密码加密以及应用于服务器连接传递重要数据的加密,用处非常的多
这里介绍一下MD5加密:
案例驱动:
|
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
|
public
class
MD5Utils {
// 进行md5的加密运算
public
static
String encode(String password) {
// MessageDigest专门用于加密的类
try
{
MessageDigest messageDigest = MessageDigest.getInstance(
"MD5"
);
byte
[] result = messageDigest.digest(password.getBytes());
// 得到加密后的字符组数
StringBuffer sb =
new
StringBuffer();
for
(
byte
b : result) {
int
num = b &
0xff
;
// 这里的是为了将原本是byte型的数向上提升为int型,从而使得原本的负数转为了正数
String hex = Integer.toHexString(num);
//这里将int型的数直接转换成16进制表示
//16进制可能是为1的长度,这种情况下,需要在前面补0,
if
(hex.length() ==
1
) {
sb.append(
0
);
}
sb.append(hex);
}
return
sb.toString();
}
catch
(NoSuchAlgorithmException e) {
e.printStackTrace();
return
null
;
}
}
}
|
MD5的加密实现方式是被谷歌屏蔽起来的,所以这只能想黑盒子测试一样去了解它的作用,那么这里是将传入的字符串转换成16位16进制的字符串从而起到加密的作用,中间对于&0Xff也已经做出了解释。这里顺便记录一下java的基础知识,不用真的还比较容易忘记。
java 8大基本数据类型:
类型 长度(字节为单位,一个字节是8位也就是0000 0000,如果是字就是16位 0000 0000 0000 0000)
boolean–>1
char–>2
byte–>1
short–>2
int–>4
long–>8
float–>4
double–>8
PS:在java中,有一个字符串的操作
案例驱动:
|
1
2
3
4
5
6
7
8
9
10
|
public
void
test3()
{
<span style=
"text-decoration: underline;"
>String</span> password =
"1203"
;
byte
[] bytes = password.getBytes();
for
(
byte
b: bytes)
{
System.out.println(b);
}
}
|
需要做出的基本解释,就是这里java会将字符串中的内容转换成字节数组进行输出,规律如下:
- 英文单字 一个对应一个字节
- 数字一般也是一个数字对应一个字节
- 中文的话一般是一个中文对应3个字节来表示。(这里不是非常的明白,为什么一个中文对应3个字节)
