分享md5加密代碼:md5加密工具怎麼用

Md5優點:快速計算m,具有單向性 one-way,不可由散列值推出原消息,但是如果密碼過於簡單就會有一定概率被暴力破解。

密碼存儲常用方式:

1、雙重MD5

2、MD5+加鹽

3、雙重MD5+加鹽

我一般使用2,只要資料庫沒有被攻破,密碼被暴力破解的概率是微乎其微的。

pom文件:

<!--用於加密-->
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
</dependency
//userDO.setPwd(registerRequest.getPwd());
// secret 保存鹽
userDO.setSecret("$1$" + CommonUtil.getStringNumRandom(8));
// 密碼 + 鹽處理
String cryptPwd = Md5Crypt.md5Crypt(registerRequest.getPwd().getBytes(), userDO.getSecret());
// 保存加密後的密碼
userDO.setPwd(cryptPwd);
public static String getStringNumRandom(int length) {
    Random random = new Random();
    //生成隨機數字和字母,
    StringBuilder saltString = new StringBuilder(length);
    for (int i = 1; i <= length; ++i) {
        saltString.append(ALL_CHAR_NUM.charAt(random.nextInt(ALL_CHAR_NUM.length())));
    }
    return saltString.toString();
}扥時候,再使用相同的方法驗證密碼是否一致

登錄的時候,再使用相同的方法驗證密碼是否一致

List<UserDO> userDOList = userMapper.selectList(new QueryWrapper<UserDO>().eq("mail", loginRequest.getMail()));
if (userDOList != null && userDOList.size() == 1) {
    //已經註冊
    UserDO userDO = userDOList.get(0);
    String cryptPwd = Md5Crypt.md5Crypt(loginRequest.getPwd().getBytes(), userDO.getSecret());
    if (cryptPwd.equals(userDO.getPwd())) {
        //登陸成功,生成token TODO
        return null;
    } else {
        return JsonData.buildResult(BizCodeEnum.ACCOUNT_PWD_ERROR);
    }

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/222973.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:13
下一篇 2024-12-09 14:13

相關推薦

發表回復

登錄後才能評論