2

したがって、MD5 は新しいアプリケーションでは技術的に禁止されていることはわかっていますが、ランダムに次のことを考えました。

以来

md5($password);

安全ではありません

md5(md5($password))

より良い代替手段になりますか?使えば使うほど安全になるの?このような関数を作成したとします

function ExtremeEncrypt($password)
{
 $encryptedpass = md5(sha1(md5(md5($pass))));
 return $encryptedpass;
}

この関数は、vbulletin のようにすべてのアカウントにランダムなソルトを使用するのに代わる良い方法でしょうか。

4

5 に答える 5

8

文字列をダブルハッシュしても、キースペースが制限され、衝突が発生しやすくなります。これをしないでください。二重 md5 ハッシュは、実際には、いくつかの攻撃ベクトルを持つ単一ハッシュよりも安全性が低くなります。

より良いオプションは、php 5.5 のpassword_hash関数を使用するか、以前のバージョンの php には ircmaxell のpassword_compatライブラリを使用することです。

于 2013-09-17T14:04:17.507 に答える
5

まず、ハッシュと暗号化は同じではありません。ハッシュは一方向関数ですが、暗号化はデータが復号化できることを期待しています。

セキュリティに関しては、独自のソリューションを発明しようとするべきではありません。PHP では、バージョン 5.5 以降、 Password Hashingというネイティブ ソリューションがあります。md5()安全ではなく、そのことに注意する必要があります。

バージョン 5.5 未満の PHP を使用している場合は、saltを使用してパスワードをハッシュおよび保存する必要があります。

于 2013-09-17T14:01:35.277 に答える
0

短い答え:いいえ

md5 は、力ずくで簡単に破ることができます。ハッシュのレイヤーを追加しても、総当たり攻撃の速度は直線的に低下するだけです。

于 2013-09-17T14:08:23.340 に答える
-3

まず第一に、md5 には復号化方法がないため、実際には暗号化されていません。それはハッシングと呼ばれます。

標準的な方法は、パスワードをソルトすることです。

$salt = [some random/unique number, people usually use user_id or timestamp]
$hashed_password = sha1($salt . $password)

ソルトを知る必要があることに注意してください。したがって、通常、ソルトはハッシュ化されたパスワードとともに保存することを意味します。

複数の塩を用意して、好きなように配置できます。

于 2013-09-17T14:02:15.937 に答える