mysql - MySQL 数据库中密码存储的 SHA-2?

标签 mysql visual-studio-2010 passwords vsto

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

SHA-2 问题

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

VISUAL STUDIO 2010 问题

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

加盐问题

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

编辑:添加更多信息!

最佳答案

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

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

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

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

关于mysql - MySQL 数据库中密码存储的 SHA-2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203790/

相关文章:

PHP为数据库插入设置默认值

delphi - 如何使用 TEdit 框输入密码而不显示输入的字符而仅显示 *

php - bcrypt 和清理密码?

php - 尝试 Catch 不触发功能

mysql - Decimal(2,1) 的存储要求是什么?

mysql - 在 Azure 数据库中为 MySQL 创建 MyISAM 表是否启用?

c# - 如何安装 Microsoft Spec# 2010

c++ - 在 VS2010 中未经调试运行时发布版本不起作用

.net - Visual basic 2010 检查表单加载时文件是否存在

android - SQLite android 应用程序登录