Android之简单加密–MD5 加密

在Android中须要对各类数据进行加密的操做,好比用户短信备份的数据加密、用户帐户登录的密码加密以及应用于服务器链接传递重要数据的加密,用处很是的多
这里介绍一下MD5加密:java

案例驱动:

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–>2app

byte–>1
short–>2
int–>4
long–>8测试

float–>4
double–>8
加密

PS:在java中,有一个字符串的操做spa

案例驱动:

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会将字符串中的内容转换成字节数组进行输出,规律以下:code

    1. 英文单字 一个对应一个字节
    2. 数字通常也是一个数字对应一个字节
    3. 中文的话通常是一个中文对应3个字节来表示。(这里不是很是的明白,为何一个中文对应3个字节)