MD5加密工具类

使用 MessageDigest 无需导入其他jar包,可快速调用返回

package com.example.Utils;

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

public class MD5Utils {
    public static String md5(String str) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");//返回实现制定摘要算法的MessageDigest,有异常需要捕获下异常
            byte[] bytes = md.digest(str.getBytes());//定义一个变量,把str转换成byte类型,在调用Java提供的方法进行加密,并赋值给bytes
            String s = "";                                                        //定义一个空字符串接收加密后的字符串
            for (byte b : bytes) {                                                //遍历数组
                s += Integer.toHexString(b >>> 4 & 0xF);//这里右移的原因是byte有效位8位所以要将16进制拆分成2个值;
                //把数组里的每个值都无符号右移4,然后& 0xF(这是16进制),最后把结果装换成16进制并赋值给s
                s += Integer.toHexString(b & 0xF);//byte有效位8位所以要将16进制拆分成2个值;
            }
            return s;//把加密的字符串返回
        } catch (NoSuchAlgorithmException e) {
            System.out.println("喵了个咪,出错了");
        }
        return null;
    }

    public static void main(String[] args) {
        String a = "123456";
        String s = md5(a);
        System.out.println(s);
    }

//    s +=Integer.toHexString(b >>>4&0xF);
}

解密使用彩虹表

 

posted @ 2021-11-12 11:38  BUGUAI  阅读(248)  评论(0)    收藏  举报