zoukankan      html  css  js  c++  java
  • 基于MD5盐值的密码加密与验证方式

    数据库表字段保存生成的随机盐值以进行后续验证登录

    注册加密

    controller层获取用户输入的用户名和密码调用方法这里不再赘述,直接上实现代码

    service实现层


    /**
    * 用户注册
    * @param user 将要注册的用户数据

    */

    public void reg(User user){

    // - 生成随机盐
    String salt = UUID.randomUUID().toString().toUpperCase();
    // - 基于原密码和盐值执行加密
    String md5Password = getMd5Password(user.getPassword(), salt);
    // - 将盐和加密结果封装到user对象中
    user.setSalt(salt);
    user.setPassword(md5Password);

    // 执行注册
    Integer rows = userMapper.insert(user);

    }

    验证登录方式

    根据登录名获取数据表中用户生成密码的盐值反加密后进行比对

    String md5Password = getMd5Password(password, salt);

    密码的加密方法(根据需要自行设置)

    /**
    * 将密码执行加密
    * @param password 原密码
    * @param salt 盐值
    * @return 加密后的结果
    */
    private String getMd5Password(String password, String salt) {
    // 拼接原密码与盐值
    String str = salt + password + salt;
    // 循环加密5次
    for (int i = 0; i < 5; i++) {

    // DigestUtils:springboot提供的工具类
    str = DigestUtils.md5DigestAsHex(
    str.getBytes()).toUpperCase();
    }
    // 返回结果
    return str;
    }

  • 相关阅读:
    洛谷 P1410 子序列(DP)
    LibreOJ #539. 「LibreOJ NOIP Round #1」旅游路线(倍增+二分)
    LibreOJ #541. 「LibreOJ NOIP Round #1」七曜圣贤(单调队列)
    浴谷八连测R6题解(收获颇丰.jpg)
    数论的一些小结论
    Fence9
    二模 (2) day1
    二模 (1) day2
    二模 (1) day1
    一些编码时的老错误
  • 原文地址:https://www.cnblogs.com/xiaowangxiao/p/10961384.html
Copyright © 2011-2022 走看看