如何在c#中解密密码

时间:2015-10-05 14:23:49

标签: c# html asp.net encryption

我想在C#中解密密码我正在使用以下代码。

public class NetFourMembershipProvider : SqlMembershipProvider
{

public string GetClearTextPassword(string encryptedPwd)
{

    try
    {
        byte[] encodedPassword = Convert.FromBase64String(encryptedPwd);
        byte[] bytes = this.DecryptPassword(encodedPassword);
        if (bytes == null)
        {
            return null;
        }

        return Encoding.Unicode.GetString(bytes, 0x10, bytes.Length - 0x10);
    }
    catch (Exception)
    {

        throw;
    }

   }

}

我的网络配置文件是

<configuration>
<system.web>
<machineKey validationKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"        decryptionKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" decryption="3DES"   validation="SHA1" />

<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="15">
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider"
    type="System.Web.Security.SqlMembershipProvider"
    connectionStringName="SiteSqlServer" enablePasswordRetrieval="true"
    enablePasswordReset="true" requiresQuestionAndAnswer="false"
    minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0"
    requiresUniqueEmail="false"
    passwordFormat="Encrypted"
    applicationName="DotNetNuke"
    description="Stores and retrieves ......." />
  </providers>
</membership>
<compilation debug="true" targetFramework="4.0" />
</system.web>

在此行byte[] bytes=this.DecryptPassword(encodedPassword);我收到以下错误消息。

  

您必须指定非自动生成的计算机密钥才能以加密格式存储密码。指定不同的passwordFormat,或更改machineKey配置以使用非自动生成的解密密钥。

如何转换密码。

请帮帮我。

注意: - validationkey是40个字符,decryptionKey是48个charectors长数据。

先谢谢

1 个答案:

答案 0 :(得分:4)

而是试图解密密码。将加密密码存储在数据库中...当您要验证密码时,请使用用户输入的加密密码,并将其与存储在DB中的加密密码进行比较。

通常使用SHA或MD5等算法对输入的密码执行散列。实际上,散列和加密是两回事。在这种情况下,使用散列。