• 03 MD5加密、Base64处理


    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 综合应用
     1 package cn.xiangxu.cloudNote.util;
     2 
     3 
     4 /**
     5  * MD5加密算法运行异常类
     6  * @author 三少
     7  *
     8  */
     9 public class Md5Exception extends RuntimeException {
    10 
    11     private static final long serialVersionUID = 5316676928450756806L;
    12 
    13     public Md5Exception(String message, Throwable cause) {
    14         super(message, cause);
    15         // TODO Auto-generated constructor stub
    16     }
    17     
    18 }
    MD5异常类

    4 MD5 和 Base64 综合应用简例

     1 package cn.xiangxu.testNote.test;
     2 
     3 import java.security.MessageDigest;
     4 
     5 import org.apache.tomcat.util.codec.binary.Base64;
     6 
     7 public class Test {
     8     public static String md5(String str) throws Exception {
     9         try {
    10             MessageDigest md5 = MessageDigest.getInstance("MD5");
    11             System.out.println("md5对象:" + md5);
    12             System.out.println("原始数据:" + str);
    13             
    14             byte [] output = md5.digest(str.getBytes());
    15             String str_output = new String(output);
    16             System.out.println("加密后数据:" + str_output);
    17             
    18             str_output = Base64.encodeBase64String(output);
    19             System.out.println("处理后的加密数:" + str_output);
    20         } catch (Exception e) {
    21             e.printStackTrace();
    22             throw new Exception(e);
    23         }
    24         return null;
    25     }
    26     
    27     public static void main(String[] args) throws Exception {
    28         Test.md5("dd");
    29     }
    30     
    31     
    32 }
    View Code
  • 相关阅读:
    【转】大数据求职者说
    【转】大数据东西辣么多,我该如何给自己一个清晰的定位呢?
    【转】大数据工程师需要学习哪些?
    【English】 Re-pick up English for learning big data (not updated regularly)
    【spark】spark应用(分布式估算圆周率+基于Spark MLlib的贷款风险预测)
    【idea】scala&sbt+idea+spark使用过程中问题汇总(不定期更新)
    【idea】scala&sbt+idea安装配置与测试
    spring boot热部署
    网段判断
    【转】python测试框架--doctest
  • 原文地址:https://www.cnblogs.com/NeverCtrl-C/p/6929492.html
Copyright © 2020-2023  润新知