DotNetNuke アプリケーションのデータベースに対してログインするログイン システムを作成しています。データベースにアクセスでき、aspnet_Membership テーブルの PasswordSalt を読み取ることができます。したがって、入力として次のようになります。
- ユーザーのパスワード (フォームから送信)
- ユーザーのソルト (検索できます)
ハッシュ化されたパスワードを出力として生成する必要があります。「暗号化」された PasswordFormat=2。ただし、使用されている暗号化アルゴリズムの詳細を見つけることができなかったので、自分のアプリケーションで書き換えることができます。これまでのところ、私の研究はこのページにつながっています:
http://msdn.microsoft.com/en-us/library/aa478949.aspx
また、コメントの1つに次の式があるこのSO投稿:
Convert.ToBase64String((new Rfc2898DeriveBytes(YourPWD, YourSALT)).GetBytes(20))
ただし、この数式は、次の入力と出力を持つテスト データでは機能しないようです。
- パスワード: 888888
- ソルト: ahEvjCX3FM04S5cSi1qdHA==
- ハッシュ化されたパスワード: 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)));
}
}
助けてくれてありがとう!