15

MD5ハッシュを使用してデータベースにユーザーパスワードが保存されている古いアプリケーションがあります。これをSHA-2ファミリーのものに置き換えたいと思います。

私はこれを達成するために2つの可能な方法を考えましたが、どちらもかなり不格好なようです。

1)ブール「フラグ」フィールドを追加します。この後、ユーザーが初めて認証するときは、MD5パスワードハッシュをSHAパスワードハッシュに置き換えて、フラグを設定します。次に、フラグをチェックして、パスワードハッシュが変換されたかどうかを確認できます。

2)SHAハッシュを保存するための2番目のパスワードフィールドを追加します。この後、ユーザーが初めて認証するときは、SHAを使用してパスワードをハッシュし、新しいフィールドに保存します(おそらく、同時にMD5ハッシュを削除します)。次に、SHAフィールドに値があるかどうかを確認できます。これは本質的に私の旗になります。

いずれの場合も、ログイン頻度の低いユーザーに対しては、MD5認証をしばらくの間維持する必要があります。また、アクティブでなくなったユーザーがSHAに切り替えられることはありません。

これを行うためのより良い方法はありますか?

4

7 に答える 7

11

基本的に同じですが、フィールドを追加するよりも洗練されている可能性があります。Djangoのデフォルトの認証フレームワークで、パスワードハッシュは次のように構成された文字列として保存されます。

hashtype$salt$hash

ハッシュタイプはsha1またはmd5のいずれかであり、saltは生のパスワードをソルトするために使用されるランダムな文字列であり、最後にハッシュ自体が表示されます。値の例:

sha1$a1976$a36cc8cbf81742a8fb52e221aaeab48ed7f58ab4
于 2009-09-04T20:49:25.337 に答える
6

最初にMD5を使用して将来のパスワードを作成する場合は、DBでそれらを再ハッシュすることですべてのMD5文字列をSHA1に変換できます。パスワードを確認するには、最初にパスワードをMD5する必要がありますが、それが大ヒットになるとは思いません。

php-code(ログイン):

前:$ login =(md5($ password)== $storedMd5PasswordHash);

後:$ login =(sha1(md5($ password))== $storedSha1PasswordHash);

塩漬けでも動作し、ここから最初のアイデアを得ました。

于 2009-10-20T13:22:17.147 に答える
3

私はあなたがすでに最高の可能性を持っていると思います。シャが設定されるとmd5は役に立たないので、私は#2よりも#1が好きです。

MD5を元に戻す方法はないため、新しいハッシュを作成するには、ユーザーが再度認証するのを待つ必要があります。

于 2009-09-04T20:45:55.797 に答える
2

いいえ-基本的に、気になるすべてのユーザーが変換されるまで、MD5を所定の位置に保持する必要があります。これはハッシュの性質にすぎません。変換を再度実行するための十分な情報がありません。

他の人と一緒に維持する別のオプションは、パスワードフィールドを効果的に自己記述的にすることです。

MD5:(md5 hash)
SHA:(sha hash)

そうすれば、比較に使用するアルゴリズムを簡単に検出でき、2つのフィールドがなくなる可能性があります。繰り返しになりますが、MD5をSHAで上書きします。

初期更新を実行して、現在のすべてのパスワードがMD5として宣言されるようにします。

于 2009-09-04T20:46:40.897 に答える
0

あなたの2番目の提案は私にとって最高に聞こえます。そうすれば、頻繁に使用するユーザーは、将来、より安全なエクスペリエンスを得ることができます。

最初の効果的な「クァークズモード」はコードベースであり、新しいユーザーがより良いSHAエクスペリエンスを利用できるようにするだけです。

于 2009-09-04T20:46:14.110 に答える
-1

MD5がソルトされていない場合は、http: //passcracking.com/index.phpなどの復号化サイト/レインボーテーブルをいつでも使用してパスワードを取得できます。ただし、おそらく再エンコード方式を使用する方が簡単です。

于 2009-09-04T20:48:25.323 に答える
-4

はい、sha-1に変換する前に、まず実際のパスワードを知っておく必要があります。

md5暗号化文字列から実際のパスワードを検索する場合は、 md5pass.comを試すことができます。

于 2010-10-19T12:32:31.627 に答える