投票项目_注册功能版本迭代

V0版本:

        简单的注册,前端先进行初步核对,两次输入的密码是否相等?用户账号和密码是否符合要求?核对成功后前端传来账号密码,拿到用户名去数据库核对,如果没有找到相同的用户名就插入到数据库,找到相同的用户名就返回”用户已存在”

V1版本:

        加入了uuid

        1. 导入依赖

        <!-- 雪花算法 -->
        <dependency>
            <groupId>com.github.yitter</groupId>
            <artifactId>yitter-idgenerator</artifactId>
            <version>1.0.6</version>
        </dependency>

        2. 使用

user.setUuid(String.valueOf(YitIdHelper.nextId()));

V2版本: 

        1. 加盐工具类

import java.security.SecureRandom;
import java.util.Base64;

public class creaSaltUtil {
    //    这是一个生成盐的方法:
    public String generateSalt(){
//        这是一个生成随机盐的私有方法
        SecureRandom secureRandom = new SecureRandom();
        byte[] saltByte = new byte[16];
//        将生成的随机字节填充到盐字节数组中
        secureRandom.nextBytes(saltByte);
//        直接转成String类型可能存在丢失数据或引入不可见字符问题
//        return  new String(saltByte);
//        所以这里将随机盐数组转换成Base64编码的字符串
        return Base64.getEncoder().encodeToString(saltByte);
    }
}

        2. 使用

        // 在密码加密过程中添加盐值可以增加密码的安全性,防止彩虹表攻击
        creaSaltUtil creaSaltUtil = new creaSaltUtil();
        // 生成随机的盐值
        String salt=creaSaltUtil.generateSalt();
        String saltPwd=password+salt;
        // 对拼接后的字符串进行MD5哈希运算,并将结果转换为16进制字符串。
        // 这样处理后的密码存储在数据库中,即使数据库泄露,也无法直接获取用户的原始密码
        password = DigestUtils.md5DigestAsHex(saltPwd.getBytes());
        // 将加密后的密码和生成的盐值分别设置回User对象中
        user.setPassword(password);
        user.setSalt(salt);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值