我想在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長的數據。
在此先感謝
如果可能,我會避免以可解密格式存儲密碼。密碼加密應該是單向的。 –
單向加密=哈希! –
看看這裏,你會發現有用的答案:http://stackoverflow.com/questions/10168240/encrypting-decrypting-a-string-in-c-sharp –