Java中的MD5加密

背景

用户管理是一个项目要提供的基本功能,一个用户的基本信息包括登录名和密码。

并且密码以明文方式存在数据库是不合理的,必须加密。

密码存储发展过程

  • 第一代密码

用户名和密码以明文方式存在数据库中。(容易泄露)

  • 第二代密码

对用户的密码加密处理后存储在数据库中。(但是密码不够复杂,还是会被破解)

  • 第三代密码

对用户的信息,增加了一个字段:盐值 salt

Salt 可以是任意字母、数字、或是字母或数字的组合,但必须是随机产生的,每个用户的 Salt 都不一样,用户注册的时候,数据库中存入的不是明文密码,也不是简单的对明文密码进行散列,而是 MD5( 明文密码 + Salt)

 

密码加密方式

在加密算法上,可以使用MD5加密算法,原因有二:

1. 这个算法是单向的,即使得到密文,也无法推断出明文。

2. 无论密码有多长,通过MD5计算之后得到的是一个固定长度的结果,有利于数据库的设计。

实例实现

import org.springframework.util.DigestUtils;
import com.bdp.commons.utils.StringUtils;

public class Md5 {

 
    public static String getMd5(long seckillId) {
        // 加入一个盐值,用于增加密码破解难度
        String salt = StringUtils.getUUId();
        String base = seckillId + salt;
        //获取加密后的密码
        String md5 = DigestUtils.md5DigestAsHex(base.getBytes());
        return md5;
    }
}

 

转载于:https://my.oschina.net/u/3908739/blog/1976051

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值