MD5 を使用してユーザーのパスワードをハッシュし、それをデータベースに保存するシステムがあります。現在、SHA1 (およびユーザー固有ではなく固有のシステム SALT) を使用してパスワードをハッシュする別のシステムに変更しています。
PHP を使用して、ユーザーの古い MD5 パスワードを新しい SHA1 パスワードに変換するにはどうすればよいですか?
申し訳ありませんが、できません。
MD5 と SHA1 の両方のバージョンを保存し、ユーザーのログイン時に SHA1 コンテンツを入力することが最善の方法です。SHA1 バージョンが利用可能かどうかを確認し、利用できない場合は古い検証戦略を使用してください。
最終的には、ほとんどのユーザーを新しい SHA1/SALT ベースのシステムに透過的に移行する必要があります。
ユーザーがパスワードを再入力しない限り、ハッシュ タイプを変更することはできません。それらは不可逆的な一方向ハッシュです。レインボー テーブルでルックアップを試みることもできると思いますが、特定のハッシュには複数の衝突があるため、それも 100% うまくいくとは限りません。また、あなたの塩はそれを無効にします. それが塩のポイントです。
それらの SHA1 バージョンを作成するには、元の平文パスワードが必要です。ただし、MD5 ハッシュはもちろん 1 つの方法です。そのため、たまたま平文バージョンのパスワードを持っていない限り、やりたいことを実行する方法はありません。