后台密码加盐存储 pwd+salt sha256(),java实现

后台仅仅使用md5 或者 sha256对密码加密后存储在一定程度上存在被撞库风险。这时候考虑使用随机生成salt进行密码加盐。

前后台注册基本逻辑:

前端传入md5过的密码pmd5-》后台接受,并随机生成salt -》后台使用sha256(salt+pmd5) 生成最终密码pwd 。

-》后台在数据库存储字段为 salt、pwd 。

 

代码实现:

创建如下工具类PasswordUtil即可:

package utils;

import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;
import org.apache.commons.lang3.RandomStringUtils;

/**
 * 加盐 sha256()
 */
public final class PasswordUtil {

    /**
     *
     * @return 生成密码需要的盐
     */
    public static String getSalt(){
        return RandomStringUtils.randomAlphabetic(64);
    }

    /**
     *
     * @param salt
     * @param pwdPlain
     * @return sha256
     */
    public static String sha256(String salt,String pwdPlain){

        return Hashing.sha256().newHasher().putString(salt + pwdPlain, Charsets.UTF_8).hash().toString();
    }
}

如果没有RandomStringUtils这个类的包,可以mvn加依赖:

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.0</version>
        </dependency>

在逻辑层使用:

@Override
	public UserInfo createUser(UserDto userDto) {
		User user = new User();
		BeanUtils.copyProperties(user,userDto);
		String salt = PasswordUtil.getSalt(); //获取salt
		String pwd256 = PasswordUtil.sha256(salt,userDto.getPwd()); // sha256处理
		user.setPassword(pwd256);
		user.setSalt(salt);
		UserInfo userInfo = new UserInfo();
		BeanUtils.copyProperties(userInfo,user);
		userDao.insertUser(user); // 数据库存储

		return userInfo;
	}

以上相当于使用 sha256(salt+md5)进行加密。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值