MD5加密工具类

该博客介绍了如何使用Java实现MD5加密,包括在密码加密中加入盐值以提高安全性。主要方法包括用户密码加密和MD5加密的私有辅助方法,通过`MessageDigest`进行哈希转换,并将结果转化为十六进制字符串。
摘要由CSDN通过智能技术生成
import org.apache.commons.lang3.StringUtils;

import java.io.UnsupportedEncodingException;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;


/**
 * @author <a href="mailto:shizi@microants.cn">狮子</a>
 * version 1.0.0
 * since 1.0.0
 */
public class MD5Utils {
        /*
         * 为了提高安全性,我们又额外加了一串随机字符串(盐值)
         */
        private static final String USER_PWD_ENCP_PREFIX = "LDHDSFHWRERHESLM";

        /**
         * 用户密码加密
         * @param beforeEncp
         * @return
         */
        public static String encode(final String beforeEncp){
            if(StringUtils.isBlank(beforeEncp)){
                return beforeEncp;
            }
            return encryptMD5(USER_PWD_ENCP_PREFIX+beforeEncp);
        }

        /**
         * md5加密
         * @param strInput
         * @return
         */
        private static String encryptMD5(final String strInput) {
            StringBuffer buf = null;
            try {
                // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)
                MessageDigest md = MessageDigest.getInstance("MD5");
                // 输入的字符串转换成字节数组, 更新摘要
                md.update(strInput.getBytes());
                // 转换并返回结果,也是字节数组
                byte b[] = md.digest();
                // new一个StringBuffer,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方))
                buf = new StringBuffer(b.length * 2);
                //遍历
                for (int i = 0; i < b.length; i++) {
                    if (((int) b[i] & 0xff) < 0x10) { //(int) b[i] & 0xff 转换成无符号整型
                        buf.append("0");
                    }
                    //Long.toHexString( 无符号长整数的十六进制字符串表示)
                    buf.append(Long.toHexString((int) b[i] & 0xff));
                }
            } catch (NoSuchAlgorithmException ex) {
                ex.printStackTrace();
            }
            return buf==null?null:buf.toString(); //返回加密后 的结果
        }

    public static void main(String[] args) throws UnsupportedEncodingException {
        long start = System.currentTimeMillis();
        System.out.println(encode("microants"));
        System.out.println(System.currentTimeMillis() - start);
    }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值