C# 如何使用自定义加密配置ASP.NET成员资格提供程序?

C# 如何使用自定义加密配置ASP.NET成员资格提供程序?,c#,asp.net,asp.net-membership,cryptography,web-config,C#,Asp.net,Asp.net Membership,Cryptography,Web Config,我想将System.Web.Security.Membership.HashAlgorithmType(或thru Web.config)设置为我创建的自定义加密类,在这个函数中我有加密和解密函数,我想映射属性值以使用这个类 我该怎么做 另外,我不介意更改crypto类的结构,我的观点是使用自定义crypto类 提前感谢。我在MembershipProvider实现中添加了以下内容: string PasswordEncryptionKey = "the Key"; //should be se

我想将System.Web.Security.Membership.HashAlgorithmType(或thru Web.config)设置为我创建的自定义加密类,在这个函数中我有加密和解密函数,我想映射属性值以使用这个类

我该怎么做

另外,我不介意更改crypto类的结构,我的观点是使用自定义crypto类


提前感谢。

我在MembershipProvider实现中添加了以下内容:

string PasswordEncryptionKey = "the Key"; //should be set somewhere else
internal static byte[] EncryptPassword(string password)
{
    MD5CryptoServiceProvider hash = new MD5CryptoServiceProvider();
    byte[] key = hash.ComputeHash(
                    UTF8Encoding.UTF8.GetBytes(PasswordEncryptionKey));
    hash.Clear();

    RijndaelManaged rm = new RijndaelManaged();
    rm.Key = key;
    rm.Mode = CipherMode.ECB;
    rm.Padding = PaddingMode.PKCS7;

    ICryptoTransform transform = rm.CreateEncryptor();
    byte[] bytes = UTF8Encoding.UTF8.GetBytes(password);
    byte[] result = transform.TransformFinalBlock(bytes, 0, bytes.Length);
    rm.Clear();
    return result;
}

internal new static string DecryptPassword(byte[] encodedPassword)
{
    MD5CryptoServiceProvider hash = new MD5CryptoServiceProvider();
    byte[] key = hash.ComputeHash(
                          UTF8Encoding.UTF8.GetBytes(PasswordEncryptionKey));
    hash.Clear();

    RijndaelManaged rm = new RijndaelManaged();
    rm.Key = key;
    rm.Mode = CipherMode.ECB;
    rm.Padding = PaddingMode.PKCS7;

    ICryptoTransform transform = rm.CreateDecryptor();
    byte[] result = transform.TransformFinalBlock(
                              encodedPassword, 0, encodedPassword.Length);
    rm.Clear();
    return UTF8Encoding.UTF8.GetString(result); ;
}

您是使用内置的SqlMembershipProvider还是编写了自己的自定义成员资格提供程序?我使用自定义成员资格提供程序