2015-10-05 65 views
0

我想在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個字符,而decryptionKey是48個charectors長的數據。

在此先感謝

+7

如果可能,我會避免以可解密格式存儲密碼。密碼加密應該是單向的。 –

+2

單向加密=哈希! –

+0

看看這裏,你會發現有用的答案:http://stackoverflow.com/questions/10168240/encrypting-decrypting-a-string-in-c-sharp –

回答

4

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

通常使用SHA或MD5等算法對輸入的密碼執行散列操作。實際上,散列和加密是兩種不同的事情。在這種情況下,使用散列法。

+0

我想發送密碼到另一臺服務器,因爲我們是更改服務器。這就是我解密密碼的原因。有什麼方法可以解密密碼嗎? –

+0

爲什麼你想解密併發送密碼......如果你自己發送加密的密碼,它不會工作嗎? – Viru