首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多么?在ASP.NET中加密和解密用户成员身份密码

问多么?在ASP.NET中加密和解密用户成员身份密码
EN

Stack Overflow用户
提问于 2010-06-11 02:26:41
回答 4查看 21.9K关注 0票数 8

我们正在使用ASP.NET成员资格提供程序创建一个新站点,用于用户注册和登录。我们的旧系统对用户密码进行了加密,以便我们可以在需要时恢复它们。

我遇到了很大的麻烦,不知道是否可以使用ASP.NET成员函数在用户注册时简单地加密密码,然后将其解密以便我可以看到它。

这方面的文档几乎是不存在的。

我知道如何配置Web.config,让它在提供程序中以加密的方式存储密码,同时在passwordFormat=中“加密”,并在machineKey中分配一个validationKey,但是密码似乎仍然会被散列(尽管它可能只是加密得很好)。无论哪种方式,我不能决定如何恢复密码(由我们),如果有必要的话。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-11 02:37:57

以可恢复的格式存储密码是一个非常糟糕的想法。如果你可以恢复它们,那么任何闯入你的服务器的人也可以。

最好使用标准的hash+salt方法,并使用密码重置机制来处理用户忘记密码的情况。

票数 10
EN

Stack Overflow用户

发布于 2010-06-11 02:32:49

你需要使用passwordFormat=“加密”而不是passwordFormat=“哈希”。然后,您可以在必要时使用DecryptPassword method of the MembershipProvider来解密密码。

票数 5
EN

Stack Overflow用户

发布于 2011-11-30 21:13:44

代码语言:javascript
复制
Imports System.Web.Security

Public Class PasswordRecovery
    Inherits SqlMembershipProvider

    Public Function GetDecryptedPassword(ByVal password As String) As String
        Try
            Dim _encodedPassword() As Byte = Convert.FromBase64String(password)
            Dim _bytes() As Byte = DecryptPassword(_encodedPassword)
            If _bytes Is Nothing Then
                Return ""
            Else
                Return System.Text.Encoding.Unicode.GetString(_bytes, &H10, _bytes.Length - &H10)
            End If
        Catch ex As Exception
            Throw New Exception("Error decrypting password.", ex)
        End Try
    End Function
End Class
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3017301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档