使用Md5算法对密码进行加密

先上代码:

package com.star.utils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Created by hp on 2016/11/28.
 */
public class Md5Utils {
    /**
     * 使用Md5算法进行加密
     */
    public static String md5(String plainText){
        //定义一个字节数组,接收加密完成的密码
        byte[] secretBytes=null;
        try {
            /**
             * MessageDigest:实现指定算法的一个类
             * 返回值是一个MessageDigest对象
             * getInstance(String algorithm)
             * algorithm :要实现的算法名字
             * public byte[] digest()
             * 通过执行注入填充志蕾的最终操作完成哈希计算。在调用次方法之后,摘要被重置
             */

            secretBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        /**
         * public BigInteger(int signum,byte[] magnitude)
         * signum:生成的大数字的符号。-1表示负数,0表示零,1表示正数
         * magnitude:需要转化的字节数组
         */
        String md5code=new BigInteger(1,secretBytes).toString(16);//16进制数字
        //如果生成的数字未满32位,要在前面补0
        for (int i=0;i<32-md5code.length();i++){
            md5code="0"+md5code;
        }
        return md5code;
    }
    //测试方法
    public static void main(String[] args) {
        System.out.println(md5("123"));
    }
}

运行结果:

使用Md5算法对密码进行加密_第1张图片

过程分析:

  • 首先新建一个静态的md5方法,参数plainText是需要加密的密码,类型为字符串。
  • 调用MessageDigest类的静态方法getInstace(“md5”)来获得Md5算法,用digest()方法来实现对plainText的加密。digest()的参数是一个字节数组,所以要先将plainText转化为字符数组。
  • 将加密完成的字节数组通过BigInteger()转化为16位的String类型,方便前面补0。
  • 通过for循环补0。
  • 返回加密完成的字符串。

你可能感兴趣的:(算法——密码学)