MD5工具类

—— MD5加密不可逆加密
标签: md5 加密 工具类
2017-11-24 阅读(283)

经常用到的MD5加密工具类,固定长度32位、简单、快速。MD5基于Hash算法,不可逆。

实际运用MD5,为安全起见,建议使用加密因子配合加密,后再一次MD5。


用自带的MessageDigest实现md5加密算法:

文件:MD5.java

package com.util;

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

public class MD5 {

    public static String md5(String input) {
        try {
            String result = input;
            if (input != null) {
                MessageDigest md = MessageDigest.getInstance("MD5");
                md.update(input.getBytes("UTF-8"));
                BigInteger hash = new BigInteger(1, md.digest());
                result = hash.toString(16);
                while (result.length() < 32) {
                    result = "0" + result;
                }
            }
            return result;
        } catch(Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}


使用spring包类DigestUtils方式

package com.util;

import org.springframework.util.DigestUtils;

public class MD5 {

    public static String md5(String input) {
        try {
            return DigestUtils.md5DigestAsHex(input.getBytes("UTF-8"));
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
 
}


使用commons-codec包类DigestUtils方式

package com.util;

import org.apache.commons.codec.digest.DigestUtils;

public class MD5 {

    public static String md5(String input) {
        try {
            return DigestUtils.md5Hex(input.getBytes("UTF-8"));
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
 
}



测试用例:

public static void main(String[] ass){
    String password = "123456";//密码
    String salt = "E23D*&";//加密因子

    //直接加密,容易被识别破解
    System.out.println(md5(password));
    //输出:e10adc3949ba59abbe56e057f20f883e

    //因子加密,不容易识别破解
    System.out.println(md5(salt + password));
    //输出:70b14b8082da11ae8b0d742166a41902

    //双重加密,已经刀枪不入了
    System.out.println(md5(md5(salt + password)));
    //输出:af7ea3d56063d3f0432d84890c954fbd
}


原创文章,转载请注明出处:https://www.weizhixi.com/user/index/article/id/4.html

分类:
点击(420) 阅读(283) 举报