2013-10-23 76 views
0

我有这个ASP.NET应用程序运行良好。现在我需要将用户从Windows Forms应用程序添加到ASP.NET成员资格数据库中。我已经能够成功地从Windows窗体应用程序中使用Membership类,但添加用户需要很长时间,我必须添加大量用户。ASP.NET成员资格散列密码

所以,我一直在试图将这些用户直接添加到数据库,但无法正确地对密码进行散列处理。

这里是我使用生成的密码散列代码:

public static string EncodePassword2(string pass, out string saltb64) 
{ 
    saltb64 = Crypto.GenerateSalt(); 
    byte[] bytes = Encoding.Unicode.GetBytes(pass); 
    byte[] src = Convert.FromBase64String(saltb64); 
    byte[] dst = new byte[src.Length + bytes.Length]; 
    Buffer.BlockCopy(src, 0, dst, 0, src.Length); 
    Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length); 
    HashAlgorithm algorithm = HashAlgorithm.Create("HMACSHA256"); 
    byte[] inArray = algorithm.ComputeHash(dst); 
    return Convert.ToBase64String(inArray); 
} 

有谁知道怎么做这个正确的方式?

回答

0

使用Crypto.HashPassword方法

请参考以下链接:

http://www.troyhunt.com/2012/07/stronger-password-hashing-in-net-with.html

+0

谢谢您的回答,特洛伊是错的哈希算法asp.net团队使用,如果你看到的评论在那个页面上你会看到,正如在同一篇文章中所述,使用的算法是HMACSHA256。我测试了两个,他们没有工作。如果你可以提供一些示例代码,那就太好了。 – jcgalveza