2009-08-06 11 views
1

パスワードを適切にハッシュ化していない既存のアカウントに対して、Webアプリケーションのユーザー名とログインをすばやく作成して生成するためのクイックコンソールアプリケーションを作成しました。私のWebアプリケーションでは、私はそうのようなをFormsAuthenticationを使用しています:Webアプリケーション以外のFormsAuthenticationハッシュと同じ結果が得られますか?

string hashedPwd = FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPassword, "SHA1"); 

私はコンソールアプリでをFormsAuthenticationを使用しようとしたが、それはをFormsAuthenticationも輸入を解決することはできません。私がアセンブリを紛失しているかどうか尋ねる警告が表示されます。

SHA1 sha1 = new SHA1CryptoServiceProvider(); 
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); 
byte[] bytesHashedPwd = sha1.ComputeHash(encoding.GetBytes(saltAndPwd)); 
string tmpString = encoding.GetString(byteshashedPwd); 
string hashedPwd = String.Concat(str, salt); 
return hashedPwd; 

これらの2つの方法が私に異なる結果を与えている:私は私の以前と同じ結果を与えることが次を使用しようとしました。私はFormsAuthenticationと同じ結果を得る必要があります。私は小さなベージュの背景を持つセキュリティ専門家ではなく、キャラクターセットの知識はさらに悪いです。私は何か助けに感謝します。

答えて

2

あなたは好奇心旺盛であれば、その方法で使用されるコードは次のとおりです。

return MachineKeySection.ByteArrayToHexString(
    SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(password)), 
    0 
); 
3

私のために働くようです。

  • 私はSystem.Webの
  • への参照を追加しました私はその後、私はあなたのコードスニペットを使用System.Web.Security

を使用して追加:

string hashedPwd = FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPassword, "SHA1"); 

結果を得るために。これはコンソールアプリケーションにありました。

+0

私はそんなにばかです。私は.Netには新しいです。参照を追加するとそれも解決されました。皆さんは私を助けました。申し訳ありませんが、私は最初にapocの答えを選んだ。 – uriDium

0

私は、コンソールアプリケーションにSystem.Webの参照を追加し、

string hashedPwd = FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPassword, "SHA1"); 
2

を使用することができました。ここのSystem.Web.dll依存性を回避するための別の解決策は、C#で、です:

public static string SHA1(this string stringToHash) 
{ 
    // SHA1 is 160bit 
    SHA1 sha = new SHA1Managed(); 
    byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(stringToHash)); 

    StringBuilder stringBuilder = new StringBuilder(); 
    foreach (byte b in hash) 
    { 
     stringBuilder.AppendFormat("{0:x2}", b); 
    } 

    return stringBuilder.ToString().ToUpper(); // HashPasswordForStoringInConfigFile uses uppercase hex 
} 

関連する問題