簡體   English   中英

DotNetNuke如何哈希其密碼?

[英]How does DotNetNuke Hash Its Passwords?

我正在編寫一個登錄系統,它將針對DotNetNuke應用程序的數據庫登錄。 我有權訪問數據庫,並且可以讀取aspnet_Membership表中的PasswordSalt。 因此,我將輸入以下內容:

  1. 用戶的密碼(通過表格提交)
  2. 使用者的鹽(我可以查一下)

並且我必須生成哈希密碼作為輸出。 PasswordFormat = 2,它是“加密的”。 但是,我無法找到所使用的加密算法的詳細信息,因此無法在自己的應用程序中將其重寫。 到目前為止,我的研究導致前往該頁面:

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

以及此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-它到底如何進行加密?

查看源代碼,他們有一個名為AspNetMembershipProvider的類,該類具有一個名為UserLogin的方法。 UserLogin調用一個稱為ValidateUser的私有方法,該方法又使用ASP.NET Membership提供程序,因此它實際上在內部調用了Membership.ValidateUser這個方法。

因此,如果使用用戶名和密碼調用相同的方法,則成員資格提供程序將處理密碼哈希,並返回一個布爾值,指示密碼是否匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM