且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在 ASP.NET Identity 中使用和 ASP.NET Membership 数据库?

更新时间:2023-02-15 07:40:38

我的一位同事能够帮助我.下面是哈希函数的样子.通过此更改,ASP.NET Identity 能够搭载现有的 ASP.NET Membership 数据库.

One of my coworkers was able to help me out. Below is what the hash function should look like. With this change, ASP.NET Identity is able to piggy back on an existing ASP.NET Membership database.

private void HashPassword(string password, out string passwordHash, ref string passwordSalt)
    {
        byte[] passwordBytes = Encoding.Unicode.GetBytes(password);
        byte[] saltBytes = null;

        if (!string.IsNullOrEmpty(passwordSalt))
        {
            saltBytes = Convert.FromBase64String(passwordSalt);
        }
        else
        {
            saltBytes = new byte[128 / 8];
            using (var rng = RandomNumberGenerator.Create())
            {
                rng.GetBytes(saltBytes);
            }
        }

        byte[] totalBytes = new byte[saltBytes.Length + passwordBytes.Length];
        Buffer.BlockCopy(saltBytes, 0, totalBytes, 0, saltBytes.Length);
        Buffer.BlockCopy(passwordBytes, 0, totalBytes, saltBytes.Length, passwordBytes.Length);

        using (SHA1 hashAlgorithm = SHA1.Create())
        {
            passwordHash = Convert.ToBase64String(hashAlgorithm.ComputeHash(totalBytes));
        }

        passwordSalt = Convert.ToBase64String(saltBytes);
    }

您可以在 GitHib 上找到所有 源代码.

You can find all the source code on GitHib.