2015-10-05 64 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