搜索
首页php教程php手册深入密码加salt原理的分析

本篇文章是对密码加salt原理进行了详细的分析介绍,需要的朋友参考下

我们知道,服务器空间,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。

加Salt可以一定程度上解决这一问题。所谓加Salt方法,就是加点“佐料”。其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确。

这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。这样,即便两个用户使用了同一个密码,由于系统为它们生成的salt值不同,他们的散列值也是不同的。即便黑客可以通过自己的密码和自己生成的散列值来找具有特定密码的用户,虚拟主机,但这个几率太小了(密码和salt值都得和黑客使用的一样才行)。

下面以PHP示例,讲解md5($pass.$salt)加密函数。

复制代码 代码如下:


function hash($a) {
$salt=”Random_KUGBJVY”; //定义一个salt值,程序员规定下来的随机字符串
$b=$a.$salt; //把密码和salt连接
$b=md5($b); //执行MD5散列
return $b; //返回散列
}
?>


调用方式:$new_password=hash($_POST[password]); //这里接受表单提交值,并进行加密

下面详细介绍一下加Salt散列的过程。介绍之前先强调一点,前面说过,验证密码时要使用和最初散列密码时使用“相同的”佐料。所以Salt值是要存放在数据库里的。

用户注册时,

用户输入【账号】和【密码】(以及其他用户信息);系统为用户生成【Salt值】;系统将【Salt值】和【用户密码】连接到一起;对连接后的值进行散列,得到【Hash值】;将【Hash值1】和【Salt值】分别放到数据库中。
用户登录时,

用户输入【账号】和【密码】;系统通过用户名找到与之对应的【Hash值】和【Salt值】;系统将【Salt值】和【用户输入的密码】连接到一起;对连接后的值进行散列,得到【Hash值2】(注意是即时运算出来的值);比较【Hash值1】和【Hash值2】是否相等,香港虚拟主机,相等则表示密码正确,否则表示密码错误。
有时候,为了减轻开发压力,程序员会统一使用一个salt值(储存在某个地方),而不是每个用户都生成私有的salt值。
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何在没有密码的情况下解锁iPhone如何在没有密码的情况下解锁iPhoneAug 18, 2023 pm 09:49 PM

1.使用计算机在没有密码或面容ID的情况下解锁iPhone的第一种方法是使用计算机。您必须在恢复模式下恢复iPhone。完成后,您可以设置iPhone并设置新密码,触控ID,面容ID,或者选择使用您的设备而不使用任何这些。您可以使用Mac甚至WindowsPC进行此过程。请注意:此方法将删除所有内容,并将iPhone恢复出厂设置。如果您已备份数据,则可以在设置iPhone时恢复数据。1.首先,您需要关闭iPhone。2.接下来,执行强制重启以将iPhone置于恢复模式。对于iPhone8或更高版

如何修复“iPhone不可用”消息如何修复“iPhone不可用”消息Sep 17, 2023 pm 09:25 PM

“iPhone不可用”安全功能如何操作?触发“iPhone不可用”消息的基本机制植根于系统设计的安全功能,该功能可跟踪每个不正确的密码条目。这种保护机制从第五次错误尝试解锁设备开始进入高速运转。一旦达到这个里程碑,iPhone就会设置一分钟的临时锁定期,在此期间,任何输入密码的额外尝试都将变得徒劳无功。此锁定持续时间不是静态的,而是遵循不断升级的模式。具体来说,在第五次密码尝试之后,每次后续错误密码尝试都会导致锁定计时器增加一分钟。例如,第六次错误尝试将导致2分钟锁定,第七次错误尝试将导致3分钟

如何在Python中对密码进行哈希处理?如何在Python中对密码进行哈希处理?Aug 26, 2023 pm 06:57 PM

保护用户密码是应用程序开发的一个重要方面。保护密码的最佳方法之一是利用哈希计算。散列是将纯文本密码转换为不可转换的固定长度字符序列的过程。在本文中,我们将研究如何在Python中对密码进行哈希处理,讨论其中的语言结构和计算。我们还将提供两个真实的可执行代码示例来演示不同的密码哈希方法。语法为了在Python中对密码进行哈希处理,我们将利用hashlib模块,它提供了不同的哈希算法。利用hashlib散列秘密短语的基本句子结构如下-importhashlibpassword="my_pa

react怎么实现密码隐藏功能react怎么实现密码隐藏功能Jan 03, 2023 pm 03:25 PM

react实现密码隐藏功能的方法:1、添加依赖“import {View,Text,TouchableWithoutFeedback,TextInput,Image,StyleSheet,} from 'react-native';”;2、通过“{this.state.imageState ? (...)}”方法实现密码显示与隐藏功能即可。

win10电脑设置密码的步骤教程win10电脑设置密码的步骤教程Jul 19, 2023 am 09:53 AM

电脑自从诞生以来就很好地被应用在了我们生活的方方面面,现在最新的电脑系统是win10系统,该系统有是经过无数次的测试之后才被推出来的,所以非常地流畅,那么win10怎么设置开机密码?下面,小编给大家带来了win10电脑设置密码的教程,一起来看看吧。1、点击“开始”菜单,然后点击“设置”。2、点击“账户”。3、点击“登录选项”。4、然后点击添加密码。5、接着输入我们的密码以及提示关键词。6、保存之后即是设置好密码了,重启电脑生效。以上就是win10电脑设置密码的教程啦,希望能帮助到大家。

忘记 iPhone 新密码? 暂时使用旧密码之法忘记 iPhone 新密码? 暂时使用旧密码之法Dec 02, 2023 pm 02:30 PM

当你在iOS17、iPadOS17或之后版本中更改密码后,「密码重设」功能可让你于72小时内透过旧iPhone或iPad密码取用设备。如以此方式取用iPhone或iPad,你必须立即再次更改密码。使用密码重置1:在装置的锁定画面尝试输入密码五次,直到装置显示「[设备]无法使用」画面,并要求你稍后再试为止。2:当你可以再试时,请在画面底部角落点一下「忘记密码?」选项。3:點一下「輸入之前的密碼」。4:輸入舊密碼,然後按照畫面的指示設定新密碼。在72小时届满前令旧密码过期1:在「设定」app点一下「

iOS 17:如何在iPhone上恢复已删除的密码iOS 17:如何在iPhone上恢复已删除的密码Sep 21, 2023 pm 10:13 PM

什么是iPhone上的最近删除的密码?Apple提供了一种从iOS设置中的专用“最近删除”部分(在iOS17上可用)恢复从iPhone中删除的密码的方法。这允许您通过为您提供特定的时间来重新获得对它们的访问权限来恢复您可能有意或无意删除的应用程序和服务的密码。当您从iPhone中删除密码时,iOS会将其发送到“最近删除”部分,而不是将其从设备中永久删除。这样,在从手机清除多个帐户密码时,您不会永远丢失密码。如何在iPhone上恢复已删除的密码要求:iOS17更新(在“常规>软件更新

如何在 Mac 上查找您的 WiFi 密码如何在 Mac 上查找您的 WiFi 密码Jul 18, 2023 pm 08:29 PM

如果您曾经需要与朋友分享您的WiFi密码或将新设备连接到您的网络,您就会知道忘记复杂的字符串是多么容易。幸运的是,如果您使用的是已连接到网络的Mac,则可以直接从操作系统本身轻松检索此密码。本文将指导您完成在Mac上查找WiFi密码的过程。【注】本指南假定您使用的是macOSHighSierra或更高版本,并且您拥有Mac的管理员权限。如果没有管理权限,您将无法查看已保存的WiFi密码。钥匙串访问是一种实用程序,用于存储应用程序,服务器和网站的所有密码,以及您的WiFi密码。您可以在“实用工具”

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具