2012-03-09 9 views
1

私はカスタムMembershipProviderを作成しています。もちろん、私はユーザーが作成するパスワードを暗号化したいと思います。私は、.NETにパスワードを暗号化するものがあると推測します。それは何ですか?私はどのように使用しますか?出力する文字列のサイズはどれくらいですか?以前はメンバーシッププロバイダを書いていましたが、ユーザーが正当なものであることを確認するだけでした。ユーザー登録とログインを追加する必要があるのは初めてです。MembershipProviderで組み込みのパスワード暗号化を使用するにはどうすればよいですか?

私は正しい検索条件を使用していないと確信していますが、Googleは私にとって価値のあるものは何も示していません。

答えて

1

まず、パスワードを暗号化しないでください。 themをハッシュする必要があります(これについては永遠に議論があります)。

パスワードをハッシュする場合は、HMACSHA1を使用できます。たとえば、ユーザーを作成してパスワードを保存する前に、次のように入力します。

HMACSHA1 hash = new HMACSHA1(); 
hash.Key = youKey; // you could use machine key 
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password))); 

この値をデータベースに保存します。 入力したパスワードをハッシュして比較し、ハッシュ値を比較することができます。

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20"> 
    <providers> 
    <remove name="AspNetSqlProvider" /> 
    <add name="SqlProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     passwordFormat="Hashed" 
     applicationName="/" /> 
    </providers> 
</membership> 

チェックアウトこの上で私のblog post:パスワードは設定ファイルにハッシュされることを指定する必要があります。もちろん、

。そこには、ハッシュされた、暗号化されたパスワードを使用する例があります。

+0

私はこの場合、私はそれらを平文で保存したくないということを意味しています。 –

+0

@MikeWills - 私はあなたがこれによって何を意味しているのか分かりませんが、暗号化されているかハッシュされていても、どちらの場合でもクリアテキストで保存しません。 – TheBoyan

+0

クリアテキストの意味は、パスワードがpass1234の場合、パスワードフィールドにpass1234が表示されます。ハッシュド私はランダムな不器用なように見えるだろう。 –

関連する問題