如何在C#中解密密码 [英] How to decrypt password in C#

查看:90
本文介绍了如何在C#中解密密码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我使用此代码解密我的密码



  public   class  NetFourMembershipProvider:SqlMembershipProvider 
{

public string GetClearTextPassword( string encryptedPwd)
{

尝试
{
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 (例外)
{

;
}

}

}





这是我的应用.config文件。







 <  配置 >  
< system.web >
< machineKey validationKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX decryptionKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX decryption = 3DES 验证 = SHA1 / >

< 成员资格 defaultProvider = AspNetSqlMembershipProvider userIsOnlineTimeWindow = 15 >
< 提供商 >
< clear / >
< add name = AspNetSqlMembershipProvider

type = System.Web.Security.SqlMembershipProvider

connectionStringName = SiteSqlServer < span class =code-attribute> enablePasswordRetrieval
= true

enablePasswordReset = true requiresQuestionAndAnswer = false

minRequiredPasswordLength = < span class =code-keyword> 7 minRequiredNonalphanumericCharacters = 0

requiresUniqueEmail = false

passwordFormat < span class =code-keyword> = 加密
< span class =code-attribute>
applicationName = DotNetNuke

de 脚本 ion = 存储和检索....... / >
< / providers >
< / membership < span class =code-keyword>>
< 编译 debug = true targetFramework = 4.0 / >
< / system.web >











此行

  byte  [] bytes =  this  .DecryptPassword(encodedPassword); 



我收到以下错误消息。



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

如何转换密码。



请帮帮我。



注意: - 验证密钥是40个字符,decryptionKey是48个charectors长数据。



感谢提前

解决方案

不要费心去做。给你的代码解密密码的能力是一个巨大的安全风险。


您可以设置加密密钥。这篇文章 [ ^ ]描述了一个解决方案

Hi,
I am using this code to decrypt my password

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;
    }

   }

}



This is my app.config file.



<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>






At this line

byte[] bytes = this.DecryptPassword(encodedPassword);


I am getting the below error message.

"You must specify a non-autogenerated machine key to store passwords in the encrypted format. Either specify a different passwordFormat, or change the machineKey configuration to use a non-autogenerated decryption key."
How can I convert passwords.

Please help me.

Note:- The validationkey is 40 characters and decryptionKey is a 48 charectors long data.

Thanks in Advance

解决方案

Don't bother to do it. Giving your code the ability to decrypt passwords is a HUGE security risk.


You could setup the encryption key. This post[^] describes a solution.


这篇关于如何在C#中解密密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆