将盐与哈希密码一起存储的安全性如何

2023-12-25

如果您查看过 ASP.NET 会员系统的表架构,它们会存储原始密码的哈希值以及用于生成密码的盐。请参阅下面的架构,

dbo.aspnet_会员资格

ApplicationId
UserId
Password
PasswordFormat
PasswordSalt
MobilePIN
Email
. . .
  • 如果攻击者掌握了数据库,那么他从盐和哈希密码中破解原始密码不是更容易吗?

  • 查看一些记录后,似乎为每个密码生成了一个新的盐。这有什么意义呢?

  • 您会推荐这种方法,还是在代码中硬编码常量盐

Related

如果攻击者知道盐,那么它们对安全性是否毫无用处? https://stackoverflow.com/questions/1098452/are-salts-useless-for-security-if-the-attacker-knows-them


有关 ASP.NET 密码/哈希/盐存储的详细信息,请参阅示例http://msdn.microsoft.com/en-us/library/aa478949.aspx http://msdn.microsoft.com/en-us/library/aa478949.aspx

攻击者是“允许”了解盐 - 您的安全性设计必须确保即使了解盐,它仍然是安全的。

盐有什么作用?

Salt 使用预先计算的“彩虹表”帮助防御暴力攻击。
对于攻击者来说,盐使得暴力破解的成本更高(在时间/内存方面)。
计算这样一张表的成本很高,并且通常仅在可用于多个攻击/密码时才进行。
如果您对所有密码使用相同的盐,攻击者可以预先计算这样的表,然后将您的密码暴力破解为明文......
只要您为每个要存储散列的密码生成一个新的(最好的加密强度)随机盐,就没有问题。

如果您想进一步加强安全性
您可以多次计算哈希值(哈希哈希值等) - 这不会花费您太多钱,但它会使暴力攻击/计算“彩虹表”更加昂贵......请不要发明自己- 有经过验证的标准方法可以做到这一点,请参见示例http://en.wikipedia.org/wiki/PBKDF2 http://en.wikipedia.org/wiki/PBKDF2 and http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx

NOTE:

如今使用这样的机制强制的因为“CPU 时间”(可用于彩虹表/暴力破解等攻击)变得越来越广泛(例如,亚马逊的云服务跻身全球最快超级计算机前 50 名,任何人都可以使用相对较小的金额)!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将盐与哈希密码一起存储的安全性如何 的相关文章

  • 不同文件中的相同静态变量[重复]

    这个问题在这里已经有答案了 HI 欢迎大家回答这个问题 Q1 如果 File1 c 包含 static int a File2 c 包含 static int a 如果这两个文件是同一项目的一部分 如果是的话 编译会抛出任何错误吗 如果它不
  • 忽略父进程中的信号

    我正在尝试实现一个 shell 程序 我希望 shell 程序忽略 SIG INT ctrl c 但在我的程序中 子进程也会忽略 SIG INT 信号 但它不应该这样做 因为 exec 应该将子进程带到另一个程序 并且该程序默认情况下应该处
  • 使用 R.Net 版本 1.5.5 创建 REngine 实例

    我正在尝试创建一个 Hello World 示例R Language using R Net版本1 5 5 从 NuGet 加载 不幸的是 我见过的在线示例都不起作用 这就是我所做的 已安装Microsoft R Open 3 2 4 增强
  • C++ 中的反向迭代器和负跨步迭代器,在开始之前使用一个作为哨兵

    In 查看 C 反向迭代器的另一种方式 https devblogs microsoft com oldnewthing 20211112 00 p 105908雷蒙德 陈写道 C 语言的一个怪癖 你可以拥有一个指针 集合的 已过终点 但不
  • 改进绩效反思 - 我应该考虑哪些替代方案?

    我需要动态地设置对象上的一堆或属性的值 将其称为传输对象 将在短时间内创建相当数量的此类传输对象并设置其属性 我想避免使用反射 还有其他选择吗 如果是的话 有我可以查看的示例实现吗 Use Delegate CreateDelegate h
  • ICSharpCode.Decompiler + Mono.Cecil -> 如何为单个方法生成代码?

    我可以使用 Mono Cecil 和 ICSharpCode Decompiler 生成类型或程序集的代码 但是 如果我尝试为单个方法生成代码 我将收到错误 对象引用未设置为对象的实例 你们能给我任何关于这个的提示吗 提前感谢您的所有帮助
  • Image.FromStream() 方法返回 Invalid Argument 异常

    我正在从智能相机成像器捕获图像 并通过套接字编程从相机接收字节数组 NET 应用程序是客户端 相机是服务器 问题是我在运行时收到 System InvalidArgument 异常 private Image byteArrayToImag
  • C#:如何确定坐标是否在美国大陆?

    我正在获取坐标 纬度 经度 我想检查这些坐标是否位于美国大陆 有没有一种简单的方法可以在 C 中实现 我可以将坐标转换为 MGRS 或 UTM 谢谢 哇哦 他们专门为你准备了 http econym org uk gmap states x
  • 使用标准范围连接带有分隔符的字符串范围

    我想使用范围将跨度中包含的四个字节转换为字符串 这是输入和输出的示例 std span
  • 隐式转换和编译器的不同行为

    Motivated by this question https stackoverflow com q 51972738 5800831 I created the following code struct X X int struct
  • 不使用 DAO 压缩 Microsoft Access 数据库

    我用CDatabase类开一个ACCDB访问数据库 司机是 T Microsoft Access Driver mdb accdb 我可以打开并使用数据库 已经这样做很多年了 if DatabaseExist m strMDBPath AJ
  • 安全移动 C++ 对象

    我听到过一些警告 不要通过以下方式将对象运送到另一个内存位置memcpy 但不知道具体原因 除非它包含的成员做了依赖于内存位置的棘手事情 否则这应该是完全安全的 或者不是 编辑 预期的用例是像这样的数据结构vector 它存储对象 不是po
  • 如何将8字节的十六进制数输入到char数组中?

    我想生成以以下开头的十六进制数字序列07060504003020100 下一个数字是0f0e0d0c0b0a0908等等按这个顺序 当我使用unsigned long long int并输出数据的前4位 这意味着0被截断 它打印706050
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • 更改为通用接口对性能的影响

    我使用 Visual Studio 使用 C NET 开发应用程序 ReSharper 在我的方法原型中经常建议我用更通用的类型替换输入参数的类型 例如 如果我仅在方法主体中使用带有 foreach 的列表 则使用 List 和 IEnum
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 是否有普遍接受的 GMP 替代方案来实现任意精度? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在寻找 BigInt 库的过程中 我发现了这篇文章 Microsoft Windows 上的 C 或
  • nVidia 和 ATI 之间的 OpenGL 渲染差异

    最近 我将 ATI 驱动程序 我使用的是 HD7970 更新为最新版本 但我的 OpenGL 项目的一些对象停止工作 更重要的是 他们适用于 nVidia 最新驱动程序 在 960m 上测试 ATI 和 nVidia 渲染管道之间有什么我应
  • 偏专业化朋友声明

    在下面的代码中 template
  • 布尔实现的atomicCAS

    我想弄清楚是否存在错误答案 https stackoverflow com a 57444538 11248508 现已删除 关于Cuda like的实现atomicCAS for bool是 答案中的代码 重新格式化 static inl

随机推荐

  • 如何获得 sed 中的第 10 个分组值?

    这是我的 sed sed s a z A Z 0 9 a z A Z 0 9 a z A Z 0 9 a z 10 g 我试图获得第 10 个分组值 但是 它给出的第一个分组值是 0 零 如何获得第10个分组值 能否得到第10个分组值 se
  • JSON 包含条件

    我的设置 Rails 2 3 10 Ruby 1 8 7 假设我有这个代码片段 user User find 1 user to json include gt posts 如果我想包含具有特定条件的用户帖子 例如仅一周前的帖子 怎么办 定
  • 如何跟踪 php 函数/代码的处理持续时间

    我正在开发一个基于浏览器的游戏 我想知道哪些功能需要最多时间来处理等等 你们有人知道我可以从什么开始吗 使用 PHP 5 3 听起来像你想要的xhprof http pecl php net package xhprof 它擅长分析
  • Objectdatasource 和 Gridview:排序、分页、过滤

    我使用实体框架 1 0 并尝试使用可以访问我的外观的对象数据源提供 Gridview 问题是 这似乎特别困难 而且在互联网上还没有看到任何真正能做到我想要它做的事情 对于那些知道的人来说 使用对象数据源提供的网格视图无法自动排序 因此您必须
  • 无法加载资源:服务器响应状态为 403 - Image

    我发现角度和加载图像时遇到一些问题 我从 API 检索图像的链接 并将恢复的链接分配给图像的来源 但是 某些图像无法加载 并且我在 Chrome 控制台中收到以下错误 Failed to load resource the server r
  • UL 列出带有样式十进制数字的项目[重复]

    这个问题在这里已经有答案了 我需要创建一组列表项 其中需要使用边框半径和背景颜色设置列表项编号 小数 的样式 这是我希望列表项的外观的快照 我尝试在 li 上放置边框半径和背景 但我无法获得我正在寻找的输出 这里有一个工作链接 http j
  • 如何迭代 S3 存储桶中的文件?

    我有大量文件 gt 1 000 存储在 S3 存储桶中 我想迭代它们 例如 在for循环 使用以下方法从中提取数据boto3 然而 我注意到 根据http boto3 readthedocs io en latest reference s
  • 如何在不使用 Perl 和 LWP 获取页面的情况下获得最终 URL?

    我正在做一些网页抓取 http en wikipedia org wiki Web scraping使用 Perl 的 LWP 我需要处理一组 URL 其中一些可能会重定向 一次或多次 如何使用 HEAD 方法获得解决所有重定向的最终 UR
  • 在 WPF Tabcontrol 标头模板中显示 SelectedIndex

    我的应用程序中有 1 n 个选项卡控件 具有以下 XAML 设置
  • 在测试用例 espresso 之前清除数据库

    我使用 espresso 来清除我的应用程序中的数据库 我像这样设置活动 Rule JvmField val activity ActivityTestRule
  • 以循环结构将元素附加到 DOM

    加载页面后 我想为页面上的每个现有元素添加一个附加元素 我尝试过这样的事情 var divs document getElementsByTagName div for i 0 i
  • 如何在点击浏览器刷新按钮时弹出警告框?

    如果用户刷新有问题的页面 它将向数据库添加另一条记录 因此我想通过警告框警告用户 如果他们确实想要刷新页面 并且如果他们单击 确定 则应该刷新页面 否则如果他们点击取消就不会了 如何以跨浏览器兼容的方式让点击浏览器刷新按钮时出现这种类型的警
  • 在应用程序配置中找不到 LocalSqlServer 或连接字符串为空

    我刚刚将 NET 3 5 MVC 1 项目升级到 NET 4 0 MVC 3 由于某种原因 当我尝试运行它时 它显示 在应用程序中找不到连接名称 LocalSqlServer 配置或连接字符串为空 我不确定它为什么这样做 因为它在我的代码中
  • WinRT ViewModel DataBind 到异步方法

    我正在反序列化 XML 文件中的对象列表 并希望通过 ViewModel 传递到我的视图中这些对象的实际内容 问题是文件操作是async并且它一直冒泡到 ViewModel 其中 Property getters 不能被标记为这样 Prob
  • SQL Server批量导入UTF-8数据格式文件

    我一直在参考以下页面 http msdn microsoft com en us library ms178129 aspx http msdn microsoft com en us library ms178129 aspx 我只是想从
  • Pyautogui 和 pyscreeze 崩溃,windll.user32.ReleaseDC 失败

    我正在尝试比较 pyautogui 脚本中的某些像素值 但在多次成功运行后 或者有时直接在第一次调用时 它会崩溃并显示以下错误消息 Traceback most recent call last File F Koodit Python H
  • 计划将 solr 6.x 升级到 8.x。请提供升级步骤?

    需要迁移所有索引或升级索引 是否可以直接 6 x 到 8 x 或者 6 x 到 7 x 然后 7 x 到 8 x 请帮助我完成这件事 您应该开始阅读提供给的完整文档从 7 x 之前的版本升级到 Solr 8 x https lucene a
  • 在 CSS/HTML 中为不同的屏幕尺寸设置自动高度和宽度

    I have 2 issues有了这个布局 feature content 灰色背景 使其高度和宽度适应不同的屏幕尺寸 现在 在大屏幕上 feature content离页脚很远 无论屏幕尺寸如何 我都想删除一个水平滚动条 我想要 adap
  • 如何在系统级别将目录添加到 Perl 库路径?

    在标准 Linux 设置中 我可以在哪里添加目录 INC多变的 In the etc profile文件中 我添加了 export PERLLIB PERLLIB foo bar export PERL5LIB PERL5LIB foo b
  • 将盐与哈希密码一起存储的安全性如何

    如果您查看过 ASP NET 会员系统的表架构 它们会存储原始密码的哈希值以及用于生成密码的盐 请参阅下面的架构 dbo aspnet 会员资格 ApplicationId UserId Password PasswordFormat Pa