在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個字節)