md5

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

 在JDK内部集成多种算法,包括MD5和AES等,那MD5在Java上的使用就非常简单了,默认的加密是小写的

看一个简单的加密解密

public class Md5_test {
    public static void main(String[] args)
    {
        String passwordString = "123456";
        String  digeString = DigestUtils.md5Hex(passwordString);
        System.out.print("Md5Test.main()digest="+digeString);
        } 
}

存入数据库即可

//密码的隐藏
        password= DigestUtils.md5Hex(password);

不过需要导入org.apache.commons.codec.digest.DigestUtils这个包

点击看里面的源码就能看到各种方法。工具类为我们提供了很多封装方法

当然还有很多这样的工具类如

来自java.security.MessageDigest的MessageDigest
点金源码看到方法

 

再看一个md5的实例

public class MD5 {
 
    /**
     * 对传入的String进行MD5加密
     * 
     * @param s
     * @return
     */
    public static final String getMd5(String s) {
        // 16进制数组
        char hexDigits[] = { '5', '0', '5', '6', '2', '9', '6', '2', '5', 'q', 'b', 'l', 'e', 's', 's', 'y' };
        try {
            char str[];
            // 将传入的字符串转换成byte数组
            byte strTemp[] = s.getBytes();
            // 获取MD5加密对象
            MessageDigest mdTemp = MessageDigest.getInstance("MD5");
            // 传入需要加密的目标数组
            mdTemp.update(strTemp);
            // 获取加密后的数组
            byte md[] = mdTemp.digest();
            int j = md.length;
            str = new char[j * 2];
            int k = 0;
            // 将数组做位移
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            // 转换成String并返回
            return new String(str);
        } catch (Exception e) {
            return null;
        }
    }
 
    public static void main(String[] args) {
        System.out.println(MD5.getMd5("123456"));//s05bse6q2qlb9qblls96s592y55y556s
    }
原文地址:https://www.cnblogs.com/yangj-Blog/p/13129739.html