一文教你如何在数据库中安全地存储密码

news2025/2/12 13:22:04

前言

作者:神的孩子在歌唱
大家好,我叫智

让我们先谈谈什么不该做。

不要以明文形式存储密码。任何具有数据库内部访问权限的人都可以看到它们。如果数据库受损,攻击者可以轻松获取所有密码。那么,我们应该如何在数据库中安全地存储密码呢。

在这里插入图片描述

现代散列(Hash)算法。

Hash函数被普遍的应用于各类不一样的安全应用和网络协议中。

哈希是一个单向函数是不可逆。不可能解密散列以获得原始值。如果攻击者获得散列密码,他们就不能直接将其输入应用程序以获得访问权限

在这里插入图片描述
目前常见的散列(Hash)算法

使用现代散列函数安全存储密码。这些函数是使用更多资源进行计算的 “慢”函数 。这使得暴力攻击效果很低。不过一些常见的传统散列函数(如MD5和SHA-1)是 “快速” 的。它们不太安全,不应该被使用作为加密。

网络安全攻防:密码技术之散列算法

将密码存储为单向散列是朝着正确方向迈出的一步,但这还不够。攻击者可以通过预计算要攻击单向散列。一些常见的攻击是 彩虹表(rainbow table) 和基于数据库的查找。使用这些技术,黑客可以在几秒钟内破解密码,也就是会枚举很多常见的密码,一一去查找。

彩虹表:彩虹表是一个数据库,用于通过破解密码哈希来获得身份验证。

通过在散列过程中添加每个密码唯一的salt,可以确保散列对于每个密码都是唯一的。加上盐后需要穷举密码+salt的所有组合,这个计算量就相当大了,想要破解已经比较难了。

什么是彩虹表(Rainbow Table)

在这里插入图片描述

计算机系统中的密码不是直接存储为纯文本,而是使用加密进行哈希处理。哈希函数是单向函数,这意味着它不能被解密。每当用户输入密码时,密码都会转换为哈希值,并与已存储的哈希值进行比较。如果值匹配,则对用户进行身份验证。

加盐密码

salt是唯一的随机生成的字符串,作为散列过程的一部分添加到每个密码中。

在这里插入图片描述

首先将用户提供的密码随机生成的salt相结合。然后,我们使用适当的散列函数计算该组合的散列。散列与盐一起存储在数据库中。同样,salt用于生成唯一散列。它不是秘密,可以作为纯文本安全存储在数据库中。

在这里插入图片描述

当用户登录时,我们如何根据数据库中存储的内容验证密码?首先,我们从数据库中获取用户的salt。然后,我们将salt附加到用户提供的密码并对其进行散列。我们将计算出的散列与数据库中存储的散列进行比较。如果它们相同,则密码有效。

在这里插入图片描述

本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。

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

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

相关文章

10个ai算法常用库java版

今年ChatGPT 火了半年多,热度丝毫没有降下来。深度学习和 NLP 也重新回到了大家的视线中。有一些小伙伴问我,作为一名 Java 开发人员,如何入门人工智能,是时候拿出压箱底的私藏的学习AI的 Java 库来介绍给大家。 这些库和框架为机器学习、深度学习、自然语言处理等提供了广…

OceanBase 安全审计之身份鉴别

本文主要以 MySQL 和 OceanBase 对比的方式,来介绍 OceanBase(MySQL 模式)安全体系中关于身份鉴别的相关内容,包括身份鉴别机制、用户名组成、密码复杂度、密码过期策略等。 作者:金长龙 爱可生测试工程师,…

快速掌握SQL语言——数据查询语言DQL

0️⃣前言 数据查询语言DQL是一种用于查询数据库中数据的语言,它是SQL的一部分,也是SQL中最常用的语言之一。 文章目录 0️⃣前言1️⃣介绍2️⃣使用3️⃣重要性4️⃣总结 1️⃣介绍 DQL(Data Query Language) 主要用于从数据库中…

为PyCharm IDE 配置三剑客:QtDesigner[可视化设计器]、PyUIC[可视化设计器ui文件转py代码]、PyRcc[资源文件转py代码]

过去一直在使用Eric6 PyQt5,然而最近它[已然是古董级的了]似乎有些不太正常, 像我这样有强迫症的人怎么可以容忍呢? 于是有了换IDE的想法,听说PyCharm是个高富帅,大家都很喜欢用它呢!于是乎才有了这篇文章。 前提条…

【C++ 笔记五】STL 标准模板库 —— 容器基础进阶

【C 笔记五】STL 标准模板库 —— 容器基础进阶 文接上文 【C 笔记四】STL 标准模板库 —— 容器基础 文章目录 【C 笔记五】STL 标准模板库 —— 容器基础进阶I - 简单回顾1.1 - 序列式容器(顺序容器)1.2 - 关联式容器 (关联容器)1.3 - 访问方法/对外接…

面试-java常见问题

JVM 配置 程序计数器:当前线程所执行的字节码的行号指示器java虚拟机栈:临时变量元空间:类常量池,运行时常量池方法区:类信息,静态变量堆:对象实例,Sting常量池等 类加载过程 加载->链接&am…

使用javacv中的ffmpeg实现录屏

今天突发奇想,想自己写一个录屏的软件,上次写了一个专门录音的Demo,但是要把声音和视频放到一起合成一个mp4文件,着实有一点艰难,所以就打算使用ffmpeg来写一个,而这篇博客中会顺便谈一谈我碰到的各种坑。 …

JVM面试题50道

1.JDK、JRE、JVM关系? Jdk (Java Development Kit) : java语言的软件开发包。包括Java运行时环境Jre。 Jre (Java Runtime Environment) :Java运行时环境,包括Jvm。 Jvm (Java Virtual Machine) :一种用于计算机设备的规范。 Java语言在不同…

JavaWeb小记——Tomcat

目录 Tomcat简介 Tomcat下载安装 Tomcat启动 Tomcat关闭 常见问题 项目发布 发布方式一 发布方式二 发布方式三 IDEA打war包 Tomcat和IDEA整合 IDEA发布动态项目 Tomcat简介 Tomcat是Apache基金组织下的一款免费的开源的且支持Servelet和JSP规范的服务器 Tomcat下…

Spark大数据处理学习笔记1.3 使用Scala集成开发环境

文章目录 一、学习目标二、搭建Scala的IntelliJ IDEA开发环境(一)启动IDEA(二)安装Scala插件(三)配置IDEA使用的默认JDK(四)创建Scala项目1、创建Scala项目 - ScalaDemo2、创建Scala…

跨平台潜能解锁:将Ionic框架与小程序容器相结合

Ionic是一个用于构建跨平台移动应用程序的开源框架。它结合了HTML、CSS和JavaScript等技术,帮助开发者创建具有原生应用体验的移动应用程序。Ionic提供了一套用户界面组件和工具,可用于构建高度交互和美观的移动应用界面。 Ionic基于Angular框架&#x…

为什么 Twitter 和 Facebook 的网站页面变得越来越像?

Twitter和Facebook这两个社交媒体平台在不同的领域取得了巨大的成功。Twitter以其独特的推文形式而闻名,而Facebook则以其广泛的社交网络和内容分享功能而著称。 然而,近年来,这两个平台在设计和布局上的相似之处越来越明显。为什么会出现这…

奖金高达534万!2023第四届全国人工智能大赛

2023第四届全国人工智能大赛 报名链接: https://www.datafountain.cn/special/NAIC2023?target13250069&specialNAIC2023 叮咚,已向您发送组队邀请!今年最值得参与的第四届全国人工智能大赛开放报名了,3道赛题奖金534万&…

又一重点项目,石岩新能源产业园建面61.6万平,配27班学校

近日,宝安区城市更新和土地整备局发布,关于石岩街道总部经济园区城市更新单元(一期南及二期)“工业上楼”单元规划(草案)已通过专班会议审议的公告。 公告显示,项目申报主体为深圳市开宝安区投资管理集团有限公司&…

信息系统项目管理师(软考高项)备考总结

简介 信息系统项目管理师,计算机技术与软件(高级)专业技术资格。 相关考试简称软考,该资质业内简称高项。 证书价值 自行百度吧,决定考的肯定知道他能带来什么价值了。 笔者是因为从事软件开发,服务政…

js的一些工具函数以及方法

部分方法复制于:20 个 JS 工具函数助力高效开发 reduce 举例:数组求和 let a[1,3,6,5,7]; let init0;//累加的初始值,默认为0,可不写 let ba.reduce((pre,cur,index,arr)>{console.log(当前要加序号:,index);cons…

左右排版的PDF,如何转换为单栏排版的word?

将左右排版的PDF转换为单行排版的WORD文字版需要进行以下步骤: 1. 使用PDF转换工具将PDF转换为WORD格式。有很多在线或离线的PDF转WORD工具可供选择,例如金鸣表格文字识别、Adobe Acrobat、Smallpdf、Zamzar等。 2. 打开WORD文档后,选择“页…

24个Jvm面试题总结及答案

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每…

用Python将《青花瓷》的歌词生成词云图

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 因为上次有小伙伴问我,歌曲的歌词和评论怎么生成词云图,想买代码… 当时我就拒绝了,直接免费送给了他。 所以今天来分享给大家 我们以周董的《青花瓷》为例,要对《青花瓷》歌词…

Nacos架构与原理 - 注册中心服务数据模型(2.x版本)

文章目录 服务(Service)和服务实例(Instance)定义服务服务元数据定义实例实例元数据持久化属性 集群(Cluster)定义集群 生命周期服务的⽣命周期实例的⽣命周期集群的⽣命周期元数据的⽣命周期 服务&#xf…