簡體   English   中英

如何在C#中解密密碼

[英]how to Decrypt password in c#

我想使用以下代碼在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配置以使用非自動生成的解密密鑰。

如何轉換密碼。

請幫我。

注意:-驗證密鑰為40個字符,解密密鑰為48個字符長的數據。

提前致謝

而是嘗試解密密碼。 將加密的密碼存儲在數據庫中...,當您要驗證密碼時,請使用用戶輸入的加密密碼,並將其與存儲在數據庫中的加密密碼進行比較。

通常使用諸如SHA或MD5之類的徽標對輸入的密碼進行哈希處理。實際上,哈希和加密是兩種不同的方式,在這種情況下,使用哈希。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM