【问题标题】:How to configure ASP.NET MembershipProvider with custom cryptography?如何使用自定义加密配置 ASP.NET MembershipProvider?
【发布时间】:2009-06-26 03:43:46
【问题描述】:

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

我该怎么做?

PS。我不介意更改加密类的结构,我的意思是使用自定义加密类。

提前致谢。

【问题讨论】:

  • 您是使用内置的 SqlMembershipProvider 还是编写了自己的自定义会员提供程序?
  • 我使用自定义 MembershipProvider

标签: c# asp.net asp.net-membership cryptography web-config


【解决方案1】:

我将以下内容放入 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); ;
}

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2010-09-30
    • 2011-06-27
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    相关资源
    最近更新 更多