网站导航仿站,房屋设计手机绘图软件,电商erp软件排名,wordpress墨客吧实现用户个人随机salt生成jwt及鉴别用户权限的实现
盐值是什么#xff1f;
盐值#xff08;salt#xff09;是在密码学中用于增加密码安全性的一种随机值。它通常是一个随机生成的字符串#xff0c;与用户密码结合在一起#xff0c;然后再进行加密处理。盐值的作用是增加…实现用户个人随机salt生成jwt及鉴别用户权限的实现
盐值是什么
盐值salt是在密码学中用于增加密码安全性的一种随机值。它通常是一个随机生成的字符串与用户密码结合在一起然后再进行加密处理。盐值的作用是增加密码的复杂度防止常见的密码破解攻击。
在密码存储和验证过程中通常使用盐值来加密用户密码以提高密码的安全性。具体来说加密过程通常分为以下几个步骤
生成盐值系统会随机生成一个盐值通常是一个足够长的随机字符串。与密码组合将盐值与用户密码结合在一起。加密处理对组合后的密码进行加密处理通常使用哈希函数进行加密生成加密后的密码。存储密码将加密后的密码和盐值一起存储到数据库中。
而盐并不只是可以加密密码也可以加密很多东西例如token中的密钥可以用盐代替使得每个用户的token加密都不一样。
盐的作用
增加密码复杂度盐值是一个随机生成的字符串与用户密码组合后进行加密可以大大增加密码的复杂度。即使用户使用简单的密码通过引入盐值也能够提高密码的安全性因为相同的密码在不同用户身上使用不同的盐值进行加密后生成的加密密码也会不同从而增加了破解的难度。防止彩虹表攻击彩虹表是一种常见的密码破解方法攻击者事先计算并存储了大量常见密码的哈希值和对应的明文密码的对应关系然后通过比对哈希值来破解密码。盐值的引入可以有效防止彩虹表攻击因为即使相同的密码在不同用户身上使用相同的盐值进行加密最终生成的加密密码也会不同从而增加了破解的难度。增加密码安全性密码是用户账户安全的第一道防线而盐值的引入可以有效增加密码的安全性。通过引入随机的盐值可以大大降低密码被破解的风险保护用户账户的安全性。提高数据安全性除了在密码加密中的应用外盐值还可以用于加密其他敏感数据如 token、加密文件等。通过引入盐值进行加密可以提高数据的安全性防止数据被未授权的访问和篡改。
具体场景
先以具体场景开始吧业务场景是用户进行微信手机号快捷登录逻辑需要实现注册用户及登录
目前指定的条件是数据库用户id自增用户在首次登录时随机生成salt随机生成用户名头像指定用户权限利用用户名id权限等级salt生成用户token
最后指定返回的结果是用户生成的个人中心的信息生成的token
好了条件列完了接下来怎么实现呢
以go语言中gin框架为例这个过程需要分两大步来做首先是生成token的方法然后是用户初始化的方法
这两步首先需要进行用户初始化再进行加盐token的生成返回给前端
初始化首先需要在拿到用户手机号后调用函数升成用户名用户salt用户头像在插入用户信息时数据库会将用户id一并生成并生成默认权限。
第二步从数据库中拿出用户idnamesalt权限。共同生成用户的token并将用户信息连带token返回给前端。
这就出现了一个问题中间件中每次都是要验证token是否正确和有效如果salt放到mysql中每次验证都需要查询数据库对性能影响很大所以我们就需要在用户登陆时就将用户个人信息放入redis缓存中设置过期时间若用户活跃那么该信息就会一直放在redis中提升用户进行用户信心相关业务操作时的性能。