在ASP.NET成员资格提供程序数据库中加密密码

3

我有一个使用ASP.NET会员提供程序和SQL后端的传统应用程序。 数据库中的密码设置为明文。 我想在保留个人密码的同时加密这些密码。 我该如何通过编程实现这一目标?

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

基本上,我需要生成一个盐,获取密码,对密码应用加密,但我不太清楚如何实际加密密码。


3
不好的主意。你应该对密码进行哈希处理并保存哈希值--没有保留原始密码的必要。 - George Stocker
@George 我同意。然而,这是一个超出我控制范围的商业决策。 - George Johnston
1
哦,误解了:所以您有一个 SqlMembershipProvider,其中 PasswordFormat=Clear,您想将其更改为 PasswordFormat=HashedEncrypted,而不强制每个人重置密码?您提到盐 - 所以您想要哈希而不是加密?您的要求是可恢复密码还是不强制更改密码? - Rup
2个回答

3
当您说您想加密这些密码但仍保留各个密码时,我理解为您不希望更改用户的密码。
我建议您在此进行测试运行(我相信您肯定会这样做)。
请参考此文章以了解SHA1哈希的内部工作原理。 如何手动创建ASP.NET成员资格提供程序哈希密码?
  1. 创建一个小应用程序连接到数据库并对所有密码进行哈希处理。

  2. 更新您的应用程序配置以将密码哈希处理(删除“Clear”指令,因为哈希处理是默认值)。


1

我建议您使用盐值进行哈希处理。

这个网页包含了您需要的所有哈希信息:http://www.obviex.com/samples/hash.aspx

您需要遍历记录并更新它们。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接