0

パスワード暗号化アルゴリズムを研究しています。私は bcrypt 、 scrypt 、およびバリアントの存在を知っていますが、この質問に挑戦したいので、PHPでこのアルゴリズムを思いつきました:

$secret = md5( uniqid( mt_rand(), true ) ); // Length is 32
$passwd = 'qwert123';
$hash = $secret . hash( 'sha256', $secret + $passwd );

シークレットはランダムに決定され、パスワード ハッシュの先頭に追加されるため、次のようにパスワード入力を確認できます。

$secret = substr( $hash_from_db, 0, 32 );
$hash_from_db === $secret . hash( 'sha256', $secret + $input_from_user );

この実装についてどう思いますか?私はそれについていくつかのフィードバックを受け取りたいです。ありがとうございました。

4

2 に答える 2

2

PHP 5 > 5.5 を使用している場合は、新しいpassword_hash()関数を使用できます。

古いバージョンの PHP には互換性関数があります。

于 2013-09-11T22:39:47.107 に答える
0

MD5 は暗号的に壊れていると見なされます。セキュリティのために使用しないでください。

あなたはソルト+パスワードを一度だけハッシュしています。辞書検索を使用して、このようなソルト付きハッシュをクラックするツールを見つけるのに約 10 秒かかりました。あなたの実装は、いかなる形態の攻撃に対しても安全であると見なされるべきではありません。

物事を改善するには、ハッシュを複数回行うことを検討してください。複数の塩を使用する; 途中でハッシュアルゴリズムを変更。予測不可能なものを導入します。速度は味方ではありません。難読化に時間を費やせば費やすほど、安全性が高まります。

于 2013-09-11T22:23:27.757 に答える