標籤:
在Android中需要對各種資料進行加密的操作,比如使用者簡訊備份的資料加密、使用者賬戶登陸的密碼加密以及應用於伺服器串連傳遞重要資料的加密,用處非常的多
這裡介紹一下MD5加密:
案例驅動:
| 12345678910111213141516171819202122232425262728 |
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的加密實現方式是被Google屏蔽起來的,所以這隻能想黑盒子測試一樣去瞭解它的作用,那麼這裡是將傳入的字串轉換成16位16進位的字串從而起到加密的作用,中間對於&0Xff也已經做出瞭解釋。這裡順便記錄一下java的基礎知識,不用真的還比較容易忘記。
java 8大基礎資料型別 (Elementary Data Type):
類型 長度(位元組為單位,一個位元組是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中,有一個字串的操作
案例驅動:
| 12345678910 |
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個位元組)
Android之簡單加密–MD5 加密