实现用户个人随机salt生成jwt及鉴别用户权限的实现思路
实现用户个人随机salt生成jwt及鉴别用户权限的实现
盐值是什么?
盐值(salt)是在密码学中用于增加密码安全性的一种随机值。它通常是一个随机生成的字符串,与用户密码结合在一起,然后再进行加密处理。盐值的作用是增加密码的复杂度,防止常见的密码破解攻击。
在密码存储和验证过程中,通常使用盐值来加密用户密码,以提高密码的安全性。具体来说,加密过程通常分为以下几个步骤:
- 生成盐值:系统会随机生成一个盐值,通常是一个足够长的随机字符串。
- 与密码组合:将盐值与用户密码结合在一起。
- 加密处理:对组合后的密码进行加密处理,通常使用哈希函数进行加密,生成加密后的密码。
- 存储密码:将加密后的密码和盐值一起存储到数据库中。
而盐并不只是可以加密密码,也可以加密很多东西,例如token中的密钥可以用盐代替,使得每个用户的token加密都不一样。
盐的作用
- 增加密码复杂度:盐值是一个随机生成的字符串,与用户密码组合后进行加密,可以大大增加密码的复杂度。即使用户使用简单的密码,通过引入盐值也能够提高密码的安全性,因为相同的密码在不同用户身上使用不同的盐值进行加密后,生成的加密密码也会不同,从而增加了破解的难度。
- 防止彩虹表攻击:彩虹表是一种常见的密码破解方法,攻击者事先计算并存储了大量常见密码的哈希值和对应的明文密码的对应关系,然后通过比对哈希值来破解密码。盐值的引入可以有效防止彩虹表攻击,因为即使相同的密码在不同用户身上使用相同的盐值进行加密,最终生成的加密密码也会不同,从而增加了破解的难度。
- 增加密码安全性:密码是用户账户安全的第一道防线,而盐值的引入可以有效增加密码的安全性。通过引入随机的盐值,可以大大降低密码被破解的风险,保护用户账户的安全性。
- 提高数据安全性:除了在密码加密中的应用外,盐值还可以用于加密其他敏感数据,如 token、加密文件等。通过引入盐值进行加密,可以提高数据的安全性,防止数据被未授权的访问和篡改。
具体场景
先以具体场景开始吧,业务场景是:用户进行微信手机号快捷登录(逻辑需要实现注册用户及登录);
目前指定的条件是:数据库用户id自增,用户在首次登录时随机生成salt,随机生成用户名,头像,指定用户权限;;;利用用户名,id,权限等级,salt生成用户token;
最后指定返回的结果是:用户生成的(个人中心的信息+生成的token);
好了,条件列完了,接下来怎么实现呢?
以go语言中gin框架为例,这个过程需要分两大步来做,首先是生成token的方法,然后是用户初始化的方法;
这两步首先需要进行用户初始化,再进行加盐token的生成返回给前端;
初始化首先需要在拿到用户手机号后,调用函数升成用户名,用户salt,用户头像,在插入用户信息时,数据库会将用户id一并生成,并生成默认权限。
第二步:从数据库中拿出用户id,name,salt,权限。共同生成用户的token,并将用户信息连带token返回给前端。
这就出现了一个问题,中间件中每次都是要验证token是否正确和有效,如果salt放到mysql中每次验证都需要查询数据库,对性能影响很大,所以,我们就需要在用户登陆时就将用户个人信息放入redis缓存中设置过期时间,若用户活跃,那么该信息就会一直放在redis中,提升用户进行用户信心相关业务操作时的性能。
相关文章:
实现用户个人随机salt生成jwt及鉴别用户权限的实现思路
实现用户个人随机salt生成jwt及鉴别用户权限的实现 盐值是什么? 盐值(salt)是在密码学中用于增加密码安全性的一种随机值。它通常是一个随机生成的字符串,与用户密码结合在一起,然后再进行加密处理。盐值的作用是增加…...
AI工具的热门与卓越:揭示AI技术的实际应用和影响
文章目录 每日一句正能量前言常用AI工具创新AI应用个人体验分享后记 每日一句正能量 我们在我们的劳动过程中学习思考,劳动的结果,我们认识了世界的奥妙,于是我们就真正来改变生活了。 前言 随着人工智能(AI)技术的快…...
VUE el-button指定图片背景
似乎只能通过css指定? 代码1 <el-button circleclass"stream0"click"switchToStream(0)" > </el-button> 代码2 <style>.stream0 {background-size: cover;background-image: url(~/assets/stream.png); } 如果要动态变…...
【ARM 嵌入式 C 入门及渐进 1.2 -- 是否为 n 字节对齐】
文章目录 是否为 n 字节对齐 是否为 n 字节对齐 在C语言中,你可以定义一个宏来检查一个给定地址是否是n字节对齐的。这里的n应该是2的幂(例如,2、4、8、16等)。要做到这一点,可以利用位操作的特性。具体地,…...
适配qnx和linux平台的线程管理类封装
概述 封装代码仓库: https://gitee.com/liudegui/my_thread 尝试封装一个基于C11的多线程控制与调度类,适配QNX和Linux平台,且代码符合Misra标准。它提供了以下主要功能: 线程的创建与销毁管理。线程的优先级调度。线程的CPU亲…...
【信息系统项目管理师】复习~第十五章
15.项目风险管理 每个项目都存在两个层面上的风险:①每个项目都有会影响项目达成目标的单个风险;②由单个风险和不确定性的其他来源联合导致的整体项目风险。项目风险会对项目目标产生负面或正面的影响,也就是风险与机会。项目风险管理旨在利…...
ARM单片机实现流水灯(GD32)
根据上图可知使用的引脚分别是PA8,PE6,PF6流水灯功能的实现要分别初始化这几个引脚 流水灯实现 编写流水灯代码 LED.C #include "gd32f30x.h" // Device header #include "Delay.h" // 初始化LED灯 void LED_Init(void){// 使能RCU时钟…...
操作系统基础之磁盘
概述 基本概念 磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存在扇区中。 磁头首先寻找到对应磁道,然后等到磁盘进行周期旋转到指定的扇区,才…...
【Unity Shader入门精要 第6章】基础光照(一)
1. 什么是光照模型 光照原理 在真实世界中,我们能够看到物体,是由于眼睛接收到了来自观察目标的光。这里面包括两种情况:一部分是观察目标本身发出的光(自发光)直接进入我们的眼睛,另一部分是其他物体&am…...
JavaEE概述 + Maven
文章目录 一、JavaEE 概述二、工具 --- Maven2.1 Maven功能 仓库 坐标2.2 Maven之项目构建2.3 Maven之依赖管理 三、插件 --- Maven Helper 一、JavaEE 概述 Java SE、JavaEE: Java SE:指Java标准版,适用于各行各业,主要是Java…...
python把png转成jpg
在Python中,你可以使用PIL(Python Imaging Library,也称为Pillow)库来读取PNG图片并将其转换为JPG格式。下面是一个简单的示例代码: from PIL import Image# 打开PNG图片 png_image Image.open(input.png)# 保存为JP…...
信息系统架构基本概念及发展_2.信息系统架构的定义
1.几种架构的定义 信息系统架构仍在不断发展中,还没有形成一个公认的定义,这里举出几个定义。 定义1:软件或计算机系统的信息系统架构是该系统的一个(或多个)结构,而结构由软件元素、元素的外部可见…...
ctfshow SSRF 351-358
做题前,需要先学习关于ssrf漏洞的相关知识 小注意: 当使用 file_get_contents() 函数访问远程 URL 时,它会尝试获取该 URL 指向的资源的内容,并将内容以字符串的形式返回。 如果 b.php 文件是一个 PHP 文件,它包含的内容取决于该 PHP 文件…...
优化学习方法,事半功倍
学习,是人一生中必不可少的过程。在学习的道路上,我们会遇到各种各样的挑战和困难,但只要我们能够发现并优化适合自己的学习方法,就能事半功倍,取得更好的成绩。 首先,要充分了解自己的学习方式和习惯。每个…...
Spring STOMP-开启STOMP
通过Spring框架的spring-messaging和spring-websocket模块,提供了对WebSocket上STOMP的支持。一但你添加了这些依赖项,你就可以像下面这个示例一样,通过WebSocket公开一个STOMP端点: import org.springframework.web.socket.conf…...
Python 开发 框架安全:Django SQL注入漏洞测试.(CVE-2021-35042)
什么是 Django 框架 Django 是一个用 Python 编写的 Web 应用程序框架。它提供了许多工具和库,使得开发 Web 应用程序变得更加容易和高效。Django 遵循了“MTV”(模型-模板-视图)的设计模式,将应用程序的不同组件分离开来&#x…...
《Python编程从入门到实践》day25
# 昨日知识点回顾 如何创建多行外星人 碰撞结束游戏 创建game_stats.py跟踪统计信息 # 今日知识点学习 第14章 记分 14.1 添加Play按钮 14.1.1 创建Button类 import pygame.font# button.py class Button:def __init__(self, ai_game, msg):"""初始化按钮…...
Unity 性能优化之光照优化(七)
提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、测试目的一、实时光源是什么?二、开始测试1.场景中只有一个光照的数值情况2.添加4个点光源后4.结果 总结 前言 实时光源数量越多&#x…...
C语言 | Leetcode C语言题解之第84题柱状图中最大的矩形
题目: 题解: int largestRectangleArea(int* heights, int heightsSize) {int st[heightsSize];int p[2];p[0]-1,p[1]heightsSize;int size0,result0;st[size]0;for(int i1;i<heightsSize;i){ while(size!0&&heights[i]<heights[st[size-1…...
AI办公自动化-用kimi批量重命名Word文档
文件夹里面有很多个word文档,标题里面都含有零代码编程,现在想将其替换为AI办公自动化。 在kimichat中输入提示词: 你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下: 打开文件夹&am…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
