MD5は、暗号化する前に実際のパスワードと混合するために適切な「ソルト」を使用する限り、ほとんどの場合[*]使用してもかなり安全です。
MD5で「最初の原像攻撃」を実行するためのブルートフォース以外の既知の方法はまだありません。つまり、ハッシュが与えられた場合、元のパスワードが何であったかを把握します。
上記の「ソルト」は、暗号化されたパスワードが「レインボーテーブル」または「ダイジェストする文字列」の他の既存のリストで簡単に検索されないようにするために必要です。
最近のLinked-Inパスワードリークは、saltが重要である理由の良い例です。ユーザーのパスワードをソルトできなかったため、パスワードのハッシュはすでに計算されているため(多くの場合、Googleで検出されたため)、パスワードの多くは簡単に元に戻されました。
あなたがまだすべきではないことは、塩自体を簡単に決定することです。攻撃者が塩が何であるかを理解できれば、すべての賭けは無効になります。これは、Florianによって投稿された記事で説明されているブルートフォースメカニズムが再び利用可能になるためです。良い塩は長くする必要があり、すべてのユーザーに同じ塩を使用するべきではありません。
MD5自体にこれまでに見つかった唯一の真の弱点は、元のファイルの内容がすでにわかっている場合に、別のファイルと同じMD5ダイジェストを生成する新しいファイルを作成する方法です。これは「2番目の原像攻撃」として知られており、パスワード暗号化にハッシュアルゴリズムの使用を検討する場合は関係ありません。
とはいえ、より優れたアルゴリズム(SHA-2、bcrypt)が利用できる場合は、それを使用することをお勧めします。
[*]ただし、eコマースに関連するものにはMD5を使用しません。