登录密码加盐处理方式

news2024/11/25 18:50:16

哈喽!大家好,我是旷世奇才李先生
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟,回复【项目】获取我为大家准备的项目

文章目录

  • 一、登录密码加盐处理方式
    • 1、简介
    • 2、密码加盐实操
  • 三、总结

相关阅读

  • 面试官:Zookeeper是什么,它有什么特性与使用场景?
  • 面试官:Redis如何实现持久化的、主从哨兵又是什么?

一、登录密码加盐处理方式

1、简介

在一般项目中我们的密码存储是通过md5加密进行存储的,但是随着技术的发展,这样的加密方式也不太安全,因为相同的明文密码,通过md5加密后的密文是一样的。

如果你的密码设置的比较简单,例如“123456”,这种密码通过md5加密后的密文已经烂大街了,某些高手甚至一些网站已经进行md5加密的密文进行破解了,就是通过简单的密码加密后的密文一样,然后他们对大量的简单密码进行加密,然后再对比你的密文,就可以将一些简单的密码进行破解了。

这个时候就有人说了,那让用户把密码设置复杂一点不就行了吗,这时用户说只要密码一复杂我就记不住怎么办,我脑子不好使。。。

这个时候我们就需要通过加盐来进行简单密码的复杂加密化,即便是最简单的“123456”也能保证所有人加密出来的密文不一样,这样就算是黑客来了也得骂两句再走。。。

通过一张图我们可以简单看一下加盐的原理是什么。

在这里插入图片描述

可以看到我们在进行用户注册的时候根据用户随机生成一个salt,假如是“abc”,然后我们将用户输入的简单密码“123456”后面加上我们生成的salt,然后我们再进行md5加密,这样我们的密文是“123456abc”进行加密的结果,当我们用户登录的时候我们就将用户输入的密码加上salt,然后再进行加密,和数据库的password进行比对即可。

这样不管是多简单的密码,不管是有多少人设置一样的密码,数据库中存储的密文也是不一样的。

2、密码加盐实操

下面我们通过代码来实现一下用户注册的时候加盐,以及登录的时候怎么进行密码判断的。

在这里插入图片描述

 public ResponseResult login(LoginDto dto) {
        //1.正常登录 用户名和密码
        if(StringUtils.isNotBlank(dto.getPhone()) && StringUtils.isNotBlank(dto.getPassword())){
            //1.1 根据手机号查询用户信息
            ApUser dbUser = getOne(Wrappers.<ApUser>lambdaQuery().eq(ApUser::getPhone, dto.getPhone()));
            if(dbUser == null){
                return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,"用户信息不存在");
            }

            //1.2 比对密码
            String salt = dbUser.getSalt();
            String password = dto.getPassword();
            //将用户名和盐进行组合加密处理
            String pswd = DigestUtils.md5DigestAsHex((password + salt).getBytes());
            if(!pswd.equals(dbUser.getPassword())){
                return ResponseResult.errorResult(AppHttpCodeEnum.LOGIN_PASSWORD_ERROR);
            }

            //1.3 返回数据  jwt  user
            String token = AppJwtUtil.getToken(dbUser.getId().longValue());
            Map<String,Object> map = new HashMap<>();
            map.put("token",token);
            dbUser.setSalt("");
            dbUser.setPassword("");
            map.put("user",dbUser);

            return ResponseResult.okResult(map);
        }else {
            //2.游客登录
            Map<String,Object> map = new HashMap<>();
            map.put("token",AppJwtUtil.getToken(0L));
            return ResponseResult.okResult(map);
        }


    }

可以看到我们这里用户登录的时候是将数据库中的盐和用户输入的明文密码进行了一个组合,然后将这个组合后的密码进行了加密,然后再将加密后的密码和数据库中的密文进行对比,这样就是整体的一个流程。

可以看到我们使用这种方法后无论是多简单的密码最后加密成密文以后都是不一样的,这样我们的安全等级就会提升。

三、总结

项目涉及的功能还是比较全面的,建议大家跟着视频做一遍。可以关注公众号回复【项目】领取项目,如果有用就点赞支持一下吧。

文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【项目】获取我为大家准备的项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux内核的GPIO子系统驱动框架详解

目录 1 引入 2 GPIO子系统的层次 3 gpio子系统驱动程序流程 4 gpio子系统的中药数据结构 5 gpio子系统函数调用的详细细节 6 GPIO子系统的sysfs接口 6.1有哪些gpio控制器 6.2每个gpio控制器的详细信息 6.3查看gpio使用情况 6.4通过SYSFS使用GPIO 6.4.1 确定GPIO编号…

Hadoop的第二个核心组件:MapReduce框架第一节

Hadoop的第二个核心组件&#xff1a;MapReduce框架第一节 一、基本概念二、MapReduce的分布式计算核心思想三、MapReduce程序在运行过程中三个核心进程四、如何编写MapReduce计算程序&#xff1a;&#xff08;编程步骤&#xff09;1、编写MapTask的计算逻辑2、编写ReduceTask的…

Linux命令行

目录 CLI GUI 命令行界面 图形界面 命令行提示符 # $ ​编辑 命令一般由三个部分组成 历史命令&#xff0c;使用上下键&#xff0c;或者使用history&#xff0c;ctrlr搜索历史命令 通配符 *,? 切换用户 su 作业管理 &&#xff0c;jobs,bg,fg CLI GUI 命令行界面 …

基于SSM的健身房管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

第一天 关于项目遇到的问题和缺少的知识点

1.配置静态资源映射 配置文件使用的都是配置类方式 创建配置类WebMvcConfig,设置静态资源映射 用于在Springboot项目中, 默认静态资源的存放目录为 : "classpath:/resources/", "classpath:/static/", "classpath:/public/" ; 而在我们的项目中静…

黑客是如何“免费”坐飞机的?

对于爱好飞行的“空中飞人”来说&#xff0c;航空里程早已不是什么新鲜话题。如何利用航司的各种会员等级福利&#xff1f;如何积累里程&#xff1f;如何兑换航线&#xff1f;这些与里程相关的研究和分析&#xff0c;甚至发展成了非常成熟的社区文化。 航空里程也在不断的发展…

AI云服务平台大全:GPU租用 | App托管 | MLOps平台

我们搜集整理了国内外主要的深度学习云服务商&#xff0c;包括云GPU供应商、WebApp托管商和MLOps平台商。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 1、云GPU供应商 只有一台笔记本电脑&#x1f4bb;不足以运行你的AI模型&#xff0c;忘记它吧&#xff0c;使用云 …

【网易云信】音画同步测试方法的研究与实践

概述 随着移动互联网的普及和网络带宽的提高&#xff0c;音视频通话越来越成为人们生活和工作中不可或缺的一部分。音画同步是音视频体验的一个重要指标&#xff0c;在音视频传输过程中&#xff0c;由于不同的传输策略因为网络的干扰&#xff0c;音频和视频往往难以同时到达&a…

智能小车—PWM方式实现小车调速和转向

目录 1. 让小车动起来 2. 串口控制小车方向 3. 如何进行小车PWM调速 4. PWM方式实现小车转向 1. 让小车动起来 电机模块开发 L9110s概述 接通VCC&#xff0c;GND 模块电源指示灯亮&#xff0c; 以下资料来源官方&#xff0c;具体根据实际调试 IA1输入高电平&#xff0c…

上海控安SmartRocket系列产品推介(六):SmartRocket PeneX汽车网络安全测试系统

产品概述 上海控安汽车网络安全测试系统PeneX&#xff08;Penetrator X&#xff09;是一款支持对整车及车辆零部件及子系统实施网络安全测试的系统&#xff0c;其包含硬件安全、软件系统安全、车内通信及车外通信四大安全测试系统&#xff1b;支持合规性测试&#xff0c;包含国…

《TCP/IP网络编程》阅读笔记--基于 TCP 的半关闭

目录 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 1-2--shutdown()函数 1-3--半关闭的必要性 2--基于半关闭的文件传输程序 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 Linux 系统中的 close 函数会将 TCP Socket 的连接完全断开&#xff0c;这意味着不能收…

项目(智慧教室)第四部分,页面交互功能

一。页面构思 1.标题栏 大标题&#xff1a;智慧教室管理系统 小标题&#xff1a;灯光&#xff0c;报警&#xff0c;风扇&#xff0c;温度&#xff0c;湿度&#xff0c;光照 2.样式设计 背景设置。字体设置&#xff08;字体大小&#xff0c;格式&#xff0c;颜色&#xff09; 3.…

算法之双指针题型:

双指针例题小总结&#xff1a; 力扣27&#xff1a; 移除元素 力扣题目链接 双指针分为&#xff1a; 快慢双指针&#xff1a;同一个起点&#xff0c;同向出发 相向双指针&#xff1a;从两端出发&#xff0c;方向相反&#xff0c;终会相遇 经典的双指针&#xff08;快慢双指…

ESP32用作经典蓝牙串口透传模块与手机进行串口通信

ESP32用作经典蓝牙串口透传模块与手机进行串口通信 简介ESP32开发板Arduino程序手机与ESP32开发板进行蓝牙串口透传通信总结 简介 ESP32-WROOM-32模组集成了双模蓝牙包括传统蓝牙&#xff08;BR/EDR&#xff09;、低功耗蓝牙&#xff08;BLE&#xff09;和 Wi-Fi&#xff0c;具…

python实现三维应力云图

要画三维的应力分布云图&#xff0c;包括深度&#xff08;Z轴&#xff09;、X轴、Y轴&#xff0c;可以使用Matplotlib库中的mplot3d子库来实现 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D# 生成示例数据 x np.linspace(0,…

利用细胞流式术测定基因组大小和倍性

在denovo基因组测序中&#xff0c;通常会先预估基因组大小&#xff0c;杂合度等信息&#xff0c;根据基因组大小和复杂度来判断测序数据的深度&#xff0c;组装基因组的难易程度等。 预测基因组大小的方法主要有两种&#xff0c;基于Kmer频率的survey分析和基于流式细胞术&…

“指针跃动”受邀参加全球贸易服务峰会

“指针跃动”受邀参加全球贸易服务峰会 有“服”同享 共赢未来 引子 在全球化日益盛行的今天&#xff0c;贸易不再仅仅是物质的交流&#xff0c;更涉及到服务、理念、文化和科技的共享。中国国际服务贸易交易会全球贸易服务峰会&#xff0c;就是这个趋势的集中体现。在这次峰会…

连接虚拟机报错 Could not connect to ‘192.168.xxx.xxx‘ (port 22): Connection failed.

使用xshell连接虚拟机报错 Connecting to 192.168.204.129:22… Could not connect to ‘192.168.204.129’ (port 22): Connection failed. Type help’ to learn how to use Xshell prompt. 按网上的方法 是否能ping通内外网 ping www.baidu.com防火墙是否关闭 firewal…

数据分析综述

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

PyCharm 虚拟环境搭建

Anaconda搭建虚拟环境 安装 前往Anaconda官网&#xff08;https://www.anaconda.com/products/individual&#xff09;&#xff0c;下载适合您操作系统的Anaconda版本&#xff0c;建议下载最新的稳定版。这里可以直接进入这个&#xff1a;https://repo.anaconda.com/archive/ …