怎样去存储用户密码安全
一:基础知识:加盐哈希( Hashing with Salt)
我们已经知道,恶意攻击者使用查询表和彩虹表,破解普通哈希加密有多么快。我们也已经
了解到,使用随机加盐哈希可以解决这个问题。但是,我们使用什么样的盐值,又如何将其
混入密码中?
盐值应该使用加密的安全伪随机数生成器( Cryptographically Secure Pseudo-Random
Number Generator,CSPRNG )产生。CSPRNG和普通的伪随机数生成器有很大不同,
如“ C ”语言的rand()函数。顾名思义, CSPRNG 被设计成用于加密安全,这意味着它能提
供高度随机、完全不可预测的随机数。我们不希望盐值能够被预测到,所以必须使用 CSPRNG 。
下表列出了一些当前主流编程平台的 CSPRNG 方法。
Platform | CSPRNG |
---|---|
PHP | mcrypt_create_iv, openssl_random_pseudo_bytes |
Java | java.security.SecureRandom |
Dot NET (C#, VB) | System.Security.Cryptography.RNGCryptoServiceProvider |
Ruby | SecureRandom |
Python | os.urandom |
Perl | Math::Random::Secure |
C/C++ (Windows API) | CryptGenRandom |
Any language on GNU/Linux or Unix | Read from /dev/random or /dev/urandom |
每个用户的每一个密码都要使用独一无二的盐值。用户每次创建帐号或更改密码时,密码应采用一个新的随机盐值。
永远不要重复使用某个盐值。这个盐值也应该足够长,以使有足够多的盐值能用于哈希加密。一个经验规则是,盐
值至少要跟哈希函数的输出一样长。该盐应和密码哈希一起存储在用户帐号表中。
存储密码的步骤:
使用 CSPRNG 生成足够长的随机盐值。
将盐值混入密码,并使用标准的密码哈希函数进行加密,如Argon2、 bcrypt 、 scrypt 或 PBKDF2 。
将盐值和对应的哈希值一起存入用户数据库。
校验密码的步骤:
从数据库检索出用户的盐值和对应的哈希值。
将盐值混入用户输入的密码,并且使用通用的哈希函数进行加密。
比较上一步的结果,是否和数据库存储的哈希值相同。如果它们相同,则表明密码是正确的;否则,该密码错误。
以上是怎样去存储用户密码安全的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

无线网络已经成为人们生活中不可或缺的一部分、在当今数字化的世界中。保护个人无线网络的安全性却显得尤为重要、然而。设置一个强密码是确保你的WiFi网络不被他人侵入的关键。保障你的网络安全,本文将详细介绍如何使用手机来修改路由器WiFi密码。1.打开路由器管理页面-在手机浏览器中打开路由器管理页面、通过输入路由器的默认IP地址。2.输入管理员用户名和密码-以获得访问权限,在登录页面中输入正确的管理员用户名和密码。3.导航到无线设置页面-查找并点击进入无线设置页面,在路由器管理页面中。4.找到当前Wi

无线网络已经成为我们生活中不可或缺的一部分、随着互联网的快速发展。为了保护个人信息和网络安全,定期更改wifi密码是非常重要的、然而。帮助大家更好地保护家庭网络安全,本文将为大家介绍如何利用手机修改wifi密码的详细教程。1.了解wifi密码的重要性wifi密码是保护个人信息和网络安全的道防线,在网络时代、了解其重要性可以更好地理解为什么需要定期修改密码。2.确认手机连接到wifi首先确保手机已连接到要修改密码的wifi网络上,在修改wifi密码之前。3.打开手机设置菜单进入手机的设置菜单、在手

在Windows10系统中,密码策略是一套安全规则,确保用户设置的密码符合一定的强度和复杂性要求,而系统提示您的密码不满足密码策略要求则通常意味着您的密码没有达到微软设定的复杂度、长度或字符种类的标准,那么这种情况要如何避免呢?用户们可以直接的找到本地计算机策略下的密码策略来进行操作就可以了,下面就一起来看看吧。不符合密码策略规范的解决方法修改密码长度:根据密码策略要求,我们可以尝试增加密码的长度,比如将原来的6位密码改为8位或更长。添加特殊字符:密码策略通常要求包含特殊字符,如@、#、$等。我

我们的手机已经成为我们生活中不可或缺的一部分、在现代社会中。而无线网络连接也成为了我们日常生活中必不可少的工具。然而,有时候我们会面临这样的情况:想要连接其他设备却束手无策、我们连接了WiFi,但是忘记了密码。如何轻松地获取已连接手机WiFi密码呢?查找手机中已保存的WiFi密码1.在设置中找到“WiFi”选项找到并点击,进入手机的设置界面“WiFi”进入WiFi设置页面,选项。2.打开已连接的WiFi网络详情找到已连接的WiFi网络名称,点击进入该网络的详细信息页面,在WiFi设置页面中。3.

无线网络已经成为我们生活中不可或缺的一部分、在现代社会中。保护家庭WiFi网络的安全性也变得越来越重要,然而。重新设置WiFi密码是确保网络安全的一项关键任务。以保护您的家庭网络安全,本文将向您介绍如何通过路由器重新设置WiFi密码。了解路由器登录界面连接路由器并打开管理页面输入管理员用户名和密码进入无线设置选项找到当前的WiFi名称和密码备份网络设置选择修改密码选项输入新的WiFi密码设置强密码保存设置并退出重新连接设备到新WiFi网络测试连接是否成功配置其他安全设置定期更改WiFi密码了解路

通过平衡安全需求和业务需求,Java框架设计可实现安全:识别关键业务需求,优先考虑相关安全要求。制定弹性安全策略,分层应对威胁,定期调整。考虑架构灵活性,支持业务演变,抽象安全功能。优先考虑效率和可用性,优化安全措施,提高可见性。

Slim和Phalcon在PHP微框架的安全性对比中,Phalcon内置有CSRF和XSS防护、表单验证等安全特性,而Slim缺乏开箱即用的安全特性,需手动实施安全措施。对于安全至关重要的应用程序,Phalcon提供了更全面的保护,是更好的选择。

在使用C++实现机器学习算法时,安全考虑至关重要,包括数据隐私、模型篡改和输入验证。最佳实践包括采用安全库、最小化权限、使用沙盒和持续监控。实战案例中展示了使用Botan库对CNN模型进行加密和解密,以确保安全训练和预测。
