我可以从数据库中获取成员资格的解密密码吗?

时间:2010-09-22 13:14:47

标签: c# asp.net-membership

<add name="LDSAMembers" 
  type="System.Web.Security.SqlMembershipProvider" 
  connectionStringName="" 
  applicationName="" 
  requiresUniqueEmail="true" 
  passwordFormat="Encrypted" 
  minRequiredPasswordLength="6" 
  enablePasswordReset="true" 
  enablePasswordRetrieval="true" 
  maxInvalidPasswordAttempts="5" 
  passwordAttemptWindow="15" 
  requiresQuestionAndAnswer="false" 
  minRequiredNonalphanumericCharacters="0" />

我需要解密密码才能登录system.i在数据库中找到密码和passwordsalt字段

6 个答案:

答案 0 :(得分:2)

我看到你有enablePasswordReset="true",所以请使用正常路线。

答案 1 :(得分:2)

我在适当的场景中使用了上述配置(即passwordFormat =“Encrypted”)。以下代码用于使用指定的新密码重置用户的密码(反对生成新密码),以便cs代表可以在手机上询问用户输入新密码并为其更改密码,而不知道旧密码。

对user.ChangePassword的调用需要传递当前密码:

MembershipUser user = Membership.GetUser(userId);
user.ChangePassword(user.GetPassword(), newpw);

user.Password()以明文形式返回当前密码。

答案 2 :(得分:1)

没有。这是设计的。

答案 3 :(得分:1)

假设您确实配置了一个真实的连接字符串(而不是像示例中那样connectionStringName=""),您可以在代码中使用它

Membership.GetPassword(username, "");

该方法可以抛出很多异常,例如,如果实际设置了密码答案,或者用户被锁定了。有关详细信息,请参见此处:

http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.getpassword.aspx

答案 4 :(得分:0)

通常,像这样的系统是使用单向加密设计的,以防止您正在尝试执行的操作。如果您正在使用该系统,最好创建自己的帐户而不是使用其他人的帐户。

答案 5 :(得分:0)

您需要加密密码,salt和加密密码的计算机上的machineKey部分。

必须定义此部分,默认情况下不支持加密。因此,除非您在加密数据的服务器上工作,否则您需要从该计算机获取密钥。

可以在应用程序的web.config一直到c:\ windows \ microsoft.net中的根web.config之间的任何位置定义它们

所以 - 有钥匙,可以这么说。

如果您有权访问此部分,请不要在此处发帖,但请留言,我们可以谈谈解密。