javascript - 我应该如何真正节省盐分
问题描述
我对安全性和密码散列进行了大量研究,但有一件事似乎有很多意见。如何保存盐。我希望有这方面专业知识的人可以就此事发表专业意见。我应该将盐存储在数据库中吗?在单独的文件中?它们应该与密码在同一个数据库中吗?
谢谢您的帮助。
解决方案
每个用户应该有一个随机盐(不要对每个用户使用相同的盐)。每次用户创建帐户或更改密码时,都应使用新的随机盐对密码进行哈希处理。盐应该与哈希一起存储在用户帐户表中。
将盐添加到密码中,并使用标准密码散列函数对其进行散列。将盐和哈希都保存在用户的数据库记录中。
要验证密码,请从数据库中检索用户的 salt 和 hash。将盐添加到给定的密码并使用相同的散列函数对其进行散列。
将给定密码的哈希值与数据库中的哈希值进行比较。如果它们匹配,则密码正确。否则,密码不正确。
更多信息在这里
推荐阅读
- javascript - 如何验证数据 URL 方案图像
- r - 在 r lubridate 中将字符格式转换为日期格式,前导年 20 而不是 19
- html - wordpress 中的全宽视频拉伸问题
- ibm-watson - IBM Watson Personality Insights 使用什么机器学习算法?
- javascript - 尝试通过在我的终端上运行 web-ext run 来测试我的第一个 Firefox 扩展,但我的 HTML 没有呈现
- php - 如何跟踪 php-fpm 使用过多 CPU 的原因
- excel - golang将excel表格转换为结构
- c++ - map.find() 看似随机地返回 map.end()
- flutter - ImageProvider 错误 - Flutter
- r - 如何仅过滤在 2018 年和 2019 年都存在每个因素“A”的行