【问题标题】:Encrypt passwords in ASP.NET membership provider DB加密 ASP.NET 成员提供程序数据库中的密码
【发布时间】:2010-07-19 14:01:31
【问题描述】:

我有一个使用带有 SQL 后端的 ASP.NET 成员资格提供程序的旧应用程序。数据库中的密码设置为清除。我想加密这些密码,同时保留个人密码。我怎样才能以编程方式实现这一目标?

我知道为了让 ASP.NET 识别更改,我需要更改数据库密码格式、密码盐和密码本身。我还需要更改 ASP.NET 配置中的密码格式以使用加密密码格式。

基本上,我需要生成盐,获取密码,对密码应用加密,但我对如何实际加密密码有点迷茫。

【问题讨论】:

  • 坏主意。您应该对密码进行哈希处理并保存哈希值——没有理由保留原始密码。
  • @George 我同意。但是,我无法控制一个商业决策。
  • 哦,误解了:所以你有一个SqlMembershipProviderPasswordFormat=Clear,并且你想将其更改为PasswordFormat=HashedEncrypted 而不强制所有人重置密码?你提到盐 - 所以你想要哈希不加密?您的要求是可恢复密码还是不强制更改密码?

标签: asp.net asp.net-membership


【解决方案1】:

当您说您想通过仍然保留个人密码来加密这些密码时,我假设您的意思是您不想更改用户的密码。

我建议你对此进行测试(我相信你无论如何都会这样做)。

参考这篇文章了解 SHA1 散列的工作原理。 How to create a asp.net membership provider hashed password manually?

  1. 创建一个小应用程序来连接数据库并对所有密码进行哈希处理。

  2. 更新应用程序的配置以散列密码(删除“清除”指令,因为散列是默认设置。

【讨论】:

    【解决方案2】:

    我建议你用盐对它们进行哈希处理。

    此网页包含您需要散列的所有内容:http://www.obviex.com/samples/hash.aspx

    你必须迭代你的记录并更新它们。

    然后更改代码中的密码检查逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-12
      • 2011-10-13
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      相关资源
      最近更新 更多