如何在C#中解密密码 [英] How to decrypt password in 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屋!