[英]How does DotNetNuke Hash Its Passwords?
我正在編寫一個登錄系統,它將針對DotNetNuke應用程序的數據庫登錄。 我有權訪問數據庫,並且可以讀取aspnet_Membership表中的PasswordSalt。 因此,我將輸入以下內容:
並且我必須生成哈希密碼作為輸出。 PasswordFormat = 2,它是“加密的”。 但是,我無法找到所使用的加密算法的詳細信息,因此無法在自己的應用程序中將其重寫。 到目前為止,我的研究導致前往該頁面:
http://msdn.microsoft.com/en-us/library/aa478949.aspx
以及此SO post ,其中的注釋之一具有以下公式:
Convert.ToBase64String((new Rfc2898DeriveBytes(YourPWD, YourSALT)).GetBytes(20))
但是,此公式似乎不適用於我的測試數據,該數據具有以下輸入和輸出:
您可以在這里查看我的測試: 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)));
}
}
謝謝你的幫助!
查看源代碼,他們有一個名為AspNetMembershipProvider
的類,該類具有一個名為UserLogin
的方法。 UserLogin
調用一個稱為ValidateUser
的私有方法,該方法又使用ASP.NET Membership提供程序,因此它實際上在內部調用了Membership.ValidateUser這個方法。
因此,如果使用用戶名和密碼調用相同的方法,則成員資格提供程序將處理密碼哈希,並返回一個布爾值,指示密碼是否匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.