md5加密

jdk md5加密

    • 1. 简介
    • 2. md5 utils

1. 简介

  • 不可逆加密,一定程度保护业务数据
  • 作用:
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),
一种被广泛使用的密码散列函数,
可以产生出一个128位(16字节)的散列值(hash value),
用于确保信息传输完整一致。
MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,
于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 中被加以规范。

将数据(如一段文字)运算变为另一固定长度值,是散列算法的基础原理。

1996年后被证实存在弱点,可以被加以破解,
对于需要高度安全性的数据,专家一般建议改用其他算法,
如SHA-22004年,证实MD5算法无法防止碰撞攻击,
因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

2. md5 utils

package org.md5;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * md5 test 不可逆加密
 * @author echo lovely
 * @date 2020/8/17 21:47
 */
public class Md5Util {
    /**
     *
     * @Title: getStrMD5
     * @Description: 获取字符串的md5值
     */
    public static String getStrMD5(String pw) {
        try {

            // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)
            MessageDigest messageDigest =MessageDigest.getInstance("MD5");
            // 输入的字符串转换成字节数组
            byte[] inputByteArray = pw.getBytes();
            // inputByteArray是输入字符串转换得到的字节数组
            messageDigest.update(inputByteArray);
            // 转换并返回结果,也是字节数组,包含16个元素
            byte[] resultByteArray = messageDigest.digest();
            // 字符数组转换成字符串返回
            return byteArrayToHex(resultByteArray);
        } catch (NoSuchAlgorithmException e) {
            return null;
        }
    }

    /**
     *
     * @Title: byteArrayToHex
     * @Description: 将字节转化为十六进制输出
     * @param byteArray
     */
    public static String byteArrayToHex(byte[] byteArray) {

        // 首先初始化一个字符数组,用来存放每个16进制字符
        char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' };
        // new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方))
        char[] resultCharArray =new char[byteArray.length * 2];
        // 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去
        int index = 0;
        for (byte b : byteArray) {
            resultCharArray[index++] = hexDigits[b >>> 4 & 0xf];
            resultCharArray[index++] = hexDigits[b & 0xf];
        }
        // 字符数组组合成字符串返回
        return new String(resultCharArray);
    }

    public static void main(String[] args) {
        System.out.println(getStrMD5("bitQian"));
    }
}

md5加密_第1张图片

  • 可用于电子签名(加盐…)

你可能感兴趣的:(Java,md5,算法)