c# - DotNetNuke 如何散列其密码?

标签 c# dotnetnuke

我正在编写一个登录系统,用于登录 DotNetNuke 应用程序的数据库。我可以访问数据库并且可以读取 aspnet_Membership 表中的 PasswordSalt。因此,我将有以下输入:

  1. 用户密码(表单提交)
  2. 用户的盐(我可以查)

并且我必须生成散列密码作为输出。 PasswordFormat=2,即“已加密”。但是,我无法找到正在使用的加密算法的详细信息,因此我无法在自己的应用程序中重写它。到目前为止,我的研究导致了这个页面:

http://msdn.microsoft.com/en-us/library/aa478949.aspx

还有this SO post ,其中一条评论中有以下公式:

Convert.ToBase64String((new Rfc2898DeriveBytes(YourPWD, YourSALT)).GetBytes(20))

但是,这个公式似乎不适用于我的测试数据,它具有以下输入和输出:

  1. 密码:888888
  2. 盐:ahEvjCX3FM04S5cSi1qdHA==
  3. 散列密码:y3rxLUDYdj1/+IGC94/tvW6M3pQTCi/9bq1cNOUgYlM=

你可以在这里看到我的测试:http://ideone.com/EClO2

using System;
using System.Security.Cryptography;
 
public class Test
{
        public static void Main()
        {
                Console.WriteLine(Convert.ToBase64String((new Rfc2898DeriveBytes("888888", System.Convert.FromBase64String("ahEvjCX3FM04S5cSi1qdHA=="))).GetBytes(20)));
        }
}

感谢您的帮助!

更新

在这里回答:ASP.NET MembershipProvider -- How exactly does it do encryption?

最佳答案

查看源代码,他们有一个名为 AspNetMembershipProvider 的类,它有一个名为 UserLogin 的方法。 UserLogin 调用一个名为 ValidateUser 的私有(private)方法,该方法又使用 ASP.NET 成员身份提供程序,因此它实际上调用了此方法 Membership.ValidateUser内部。

因此,如果您使用用户名和密码调用相同的方法,成员(member)提供程序将处理密码散列并返回一个 bool 值,指示密码是否匹配。

关于c# - DotNetNuke 如何散列其密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12418932/

相关文章:

c# - 哪些策略可以在库中使用 IoC 容器?

c# - 如何在 DotNetNuke 自定义模块中显示图像?

asp.net - 垃圾邮件用户请求配置文件页面创建填充事件日志的错误

c# - PHP DOTNET hell

c# - 从给定日期开始循环数月和数年的简单方法

c# - 从 ViewBag 以 unicode 输出

azure - 在 Azure 网站上的 DotNetNuke 中部署扩展时出现问题

c# - 如何部分退款使用 Invoicing SDK 创建的 paypal 发票

razor - 从 Razor View 访问页面或模块级功能

javascript - CKEditor 的配置文件没有任何效果