【问题标题】:SHA-2 for Password storage in MySQL Database?SHA-2 用于 MySQL 数据库中的密码存储?
【发布时间】:2013-06-20 17:27:59
【问题描述】:

我有几个关于使用 MySQL / Visual Studio 2010 (VSTO Visual Basic) 存储/检索密码的问题。我希望他们是直截了当的!

SHA-2 问题

我正在使用 MySQL(通过 PHPMyAdmin 界面)创建一个表来存储两列:用户 ID 和密码。在阅读了 SO 和一堆其他资源之后,似乎使用 SHA-2 加密和加盐存储密码是一个可行的选择。这是正确的吗?

视觉工作室 2010 年问题

我正在 Visual Studio 2010 中构建一个 VSTO 项目,并将使用 Visual Basic 访问表中的数据 - 如何使用 SHA-2 算法对用户输入的密码进行编码?我似乎找不到有关此过程的任何“当前”指南。我想我必须下载/安装一个可以将 SHA-2 算法处理到 VS2010 的扩展。这里的过程是,我在 Excel 中构建了一个“登录系统”,但我想通过将其与 MySQL 表中现有的数据进行比较来验证用户名/密码组合。

腌制问题

另外,Salting 几乎在我读到的所有地方都被强烈推荐,所以我决定使用一个随机字符串,比如 's@w0s9w%$x" 或类似的东西,显然每次我需要编码 + 匹配时都存储/使用它数据库的密码。这是否足够安全?您如何为每个用户使用不同的盐字,但要对其进行跟踪?您是否可以简单地将用户名/盐字组合保存在另一个表中并稍后提取?

编辑:添加了更多信息!

【问题讨论】:

    标签: mysql visual-studio-2010 passwords vsto


    【解决方案1】:

    不要尝试创建自己的密码哈希方案。而是使用一个众所周知的。一般有三个选项:BcryptScryptPBKDF2。这些是由安全专业人员设计的,并且已经存在很长时间并且没有被破坏。实现适用于多种语言。

    对于腌制问题,您的基本想法是正确的。通常盐与密码一起存储在数据库中。盐不被认为是秘密,但它应该对每个用户都是唯一的。 Bcrypt 哈希本身已经包含盐,因此您无需担心。

    security.se 中的相关答案:https://security.stackexchange.com/a/6415/20774

    一篇关于密码哈希的好文章:http://crackstation.net/hashing-security.htm

    【讨论】:

    • 建议的算法是不错的选择,因为它们很慢(有成本因素)。单次 SHA-* 速度太快,因此很容易被暴力破解。
    猜你喜欢
    • 2018-07-27
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多