MD5加盐

MD5加密算法的使用 (及加盐操作)

/**
 * @Des 得到相应的一个MD5加密后的字符串
 * @param psd
 * @param salt
 * @return    MD5加密后的字符串
 */
public static String encoder(String psd, String salt) {
    try {
        StringBuffer stingBuffer = new StringBuffer();
        // 1.指定加密算法
        MessageDigest digest = MessageDigest.getInstance("MD5");
        // 2.将需要加密的字符串转化成byte类型的数据,然后进行哈希过程
        byte[] bs = digest.digest((psd + salt).getBytes());
        // 3.遍历bs,让其生成32位字符串,固定写法

        // 4.拼接字符串
        for (byte b : bs) {
            int i = b & 0xff;
            String hexString = Integer.toHexString(i);
            if (hexString.length() < 2) {
                hexString = "0" + hexString;
            }
            stingBuffer.append(hexString);
        }
        return stingBuffer.toString();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return null;
}

注意:

这种方式加密其实是使用的:md5($pass.$salt):盐值字符串加在密码字符串后面

在使用shiro框架登录验证使用md5加盐加密是:md5($salt.$pass):盐值字符串加在密码字符串前面

例如:


用介绍的这种写法写加密的结果为:b5f09dedae0dbf39078979264a7cd2cd

1)

而使用shiro框架登录验证加密的结果为:9f9c3ec0287e769e48482b1d29dd4e23

2)

所以在使用shiro框架设置密码,对密码进行加密的时候,使用:

String password = new SimpleHash("MD5","111111","XXXXXX").toString();,new SImpleHash使用的是将盐值字符串加在密码字符串前面,即md5($salt.$pass)

当然如果对该段代码中的

byte[] bs = digest.digest((psd + salt).getBytes());psd与salt的位置交换,加密的结果就为md5($salt.$pass)这种格式

md5($pass.$salt)与md5($salt.$pass)其实本质上只是盐值字符串加在密码字符串后或前

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值