JAVA开发经验(二):常用工具类1.1-加解密-MD5

摘要说明:

MD5:(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。

MD5本质上是不可逆的,部分加密也是通过加密库来进行解密的;

Maven依赖:

无,使用jdk默认即可

java工具类:

MD5Util主要包括加密32位大写,加密32位小写,加密16位大写,加密16位小写:

import java.security.MessageDigest;

/**
 * 
 * @模块名:module_taf
 * @包名:pers.cc.taf.encryption
 * @类名称: MD5Util
 * @类描述:【类描述】MD5加密包括32大小写、16位大小写
 * @版本:1.0
 * @创建人:cc
 * @创建时间:2018年7月27日下午2:11:44
 */
public class MD5Util {
    private static String m_algorithm = "MD5";

    /**
     * 
     * @方法名:encryption
     * @方法描述【方法功能描述】MD5加密32位小写
     * @param encryptStr 明文
     * @return 32位小写密文
     * @修改描述【修改描述】
     * @版本:1.0
     * @创建人:cc
     * @创建时间:2018年7月27日 下午2:15:35
     * @修改人:cc
     * @修改时间:2018年7月27日 下午2:15:35
     */
    public static String encryption(String encryptStr) {
        String re_md5 = new String();
        try {
            MessageDigest md = MessageDigest.getInstance(m_algorithm);
            md.update(encryptStr.getBytes("UTF-8"));
            byte b[] = md.digest();
            int i;
            StringBuilder builder = new StringBuilder("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    builder.append("0");
                builder.append(Integer.toHexString(i));
            }
            re_md5 = builder.toString();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return re_md5;
    }

    /**
     * 
     * @方法名:ENCRYPTION
     * @方法描述【方法功能描述】MD5加密32位大写
     * @param encryptStr 明文
     * @return 32位大写密文
     * @修改描述【修改描述】
     * @版本:1.0
     * @创建人:cc
     * @创建时间:2018年7月27日 下午2:17:46
     * @修改人:cc
     * @修改时间:2018年7月27日 下午2:17:46
     */
    public static String ENCRYPTION(String encryptStr) {
        char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
        try {
            byte[] btInput = encryptStr.getBytes();
            // 获得MD5摘要算法的 MessageDigest 对象
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            // 使用指定的字节更新摘要
            mdInst.update(btInput);
            // 获得密文
            byte[] md = mdInst.digest();
            // 把密文转换成十六进制的字符串形式
            int j = md.length;
            char 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];
            }
            return new String(str);
        }
        catch (Exception e) {
            return null;
        }
    }

    /**
     * 
     * @方法名:encryption16
     * @方法描述【方法功能描述】MD5加密16位小写
     * @param encryptStr 明文
     * @return 16位小写密文
     * @修改描述【修改描述】
     * @版本:1.0
     * @创建人:cc
     * @创建时间:2018年7月27日 下午2:18:26
     * @修改人:cc
     * @修改时间:2018年7月27日 下午2:18:26
     */
    public static String encryption16(String encryptStr) {
        return encryption(encryptStr).substring(8, 24);
    }

    /**
     * 
     * @方法名:ENCRYPTION16
     * @方法描述【方法功能描述】 MD5加密16位大写
     * @param encryptStr 明文
     * @return 16位大写密文
     * @修改描述【修改描述】
     * @版本:1.0
     * @创建人:cc
     * @创建时间:2018年7月27日 下午2:19:17
     * @修改人:cc
     * @修改时间:2018年7月27日 下午2:19:17
     */
    public static String ENCRYPTION16(String encryptStr) {
        return ENCRYPTION(encryptStr).substring(8, 24);
    }

    public static void main(String[] args) {
        try {
            System.out.println(MD5Util.encryption("cc"));// e0323a9039add2978bf5b49550572c7c
            System.out.println(MD5Util.ENCRYPTION("cc"));// E0323A9039ADD2978BF5B49550572C7C
            System.out.println(MD5Util.encryption16("cc"));// 39add2978bf5b495
            System.out.println(MD5Util.ENCRYPTION16("cc"));// 39ADD2978BF5B495
        }
        catch (Exception e) {
            System.out.println(e);
        }

    }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值