1 什么是MD5

  信息摘要算法,可以将字符进行加密,每个加密对象在进行加密后都是等长的

  应用场景:将用户密码经过MD5加密后再存储到数据库中,这样即使是超级管理员也没有能力知道用户的具体密码是多少;因为MD5加密后的数据时不能够被解密的

  步骤:

    》获取MessageDigest对象

      MessageDigest md5 = MessageDigest.getInstance("MD5");

      注意:import java.security.MessageDigest;

    》通过MessageDigest对象的方法对字符数组进行加密

      byte [] output = md5.digest(str.getBytes());

      注意:digest方法的参数返回值都是字符数组类型

    》问题:通过加MD5加密后的数据时乱码,怎么让他变成不是乱码

    》解决:通过Base64算法

 

2 什么是Base64

  对字符串进行显示处理,即:用常见的64个字符来对字符进行显示,从而有效地避免了乱码问题

  应用场景:防止乱码的产生

  步骤:

    》直接使用Base64类中的静态方法

      str_output = Base64.encodeBase64String(output);

      注意:encodeBase64String方法的参数是字符数组,返回值是字符串

      注意:import org.apache.tomcat.util.codec.binary.Base64;

 

3 MD5 和 Base64 的综合应用

 1 package cn.xiangxu.cloudNote.util;
 2 
 3 import java.security.MessageDigest;
 4 import java.security.NoSuchAlgorithmException;
 5 
 6 import org.apache.tomcat.util.codec.binary.Base64;
 7 
 8 /**
 9  * 工具类:MD5加密算法
10  * @author Administrator
11  *
12  */
13 public class NoteUtil {
14     /**
15      * MD5加密算法,实现将一个字符串进行MD5加密,然后用64个常见的字符进行显示
16      * @param src 待加密的字符串
17      * @return 返回一个字符串,这个字符串是加密后进过base64处理的结果
18      */
19     public static String md5(String src) {
20         try {
21 //            创建MessageDigest对象
22             MessageDigest md = MessageDigest.getInstance("MD5");
23 //            利用MessageDigest对象的方法对字符数组进行加密
24             byte [] output = md.digest(src.getBytes());
25 //            将加密后的字符数组转换成字符串后输出
26 //            return new String(output);
27             
28 //            利用base64对加密数据进行处理(即:利用基本的64个字符来显示加密后的数据,并将其转化成字符串)
29             String ret = Base64.encodeBase64String(output);
30             return ret;
31         } catch (NoSuchAlgorithmException e) {
32             e.printStackTrace();
33             throw new Md5Exception("加密失败", e);
34         }
35 //        return src; // 对异常进行抛出后就不能够执行到这行代码了 【捕获到异常并抛出落后就不能执行到这一行啦】
36     }
37 }
MD5 和 Base64 综合应用

相关文章: