2
$clear_text = "hello";
$salt_ = sha1("758hF4H7gJi98U6o");
$salt = substr($salt_, 0, 12);
$hash = substr(hash("sha512", $clear_text), 0, 20).$salt;

ご覧のとおり$hash、32文字の文字列を生成し、md5と同じように見せます。したがって、ハッカーはこのmd5ハッシュを実際にはそのようなものではないのに、解読しようとします。これは狡猾でしょうか、それは良い考えでしょうか?

4

2 に答える 2

5

独自の暗号を発明しようとしないでください。bcrypt、scrypt、または PBKDF2 などの標準化されたハッシュ アルゴリズムを使用してください。

参照してください:

Kirckhoff の原則と呼ばれるセキュリティの原則があり、ルールの 1 つは「秘密である必要はなく、不都合なく敵の手に渡ることができなければならない」というものです。ソースファイルとデータベースをダンプできるため、アルゴリズムを発見するのにそれほど時間はかかりません。

そこから、独自の展開されたアルゴリズムは、通常の sha512+salt からの追加の保護を実際には提供しません。彼がハッシュを攻撃できる速度は、アルゴリズムの有無にかかわらず同じです。アルゴリズムが見つかったら、スキームは役に立たないことを意味します。

于 2013-02-14T22:18:02.173 に答える
1
$salt_ = sha1("758hF4H7gJi98U6o");

エントロピーをハッシングしても、より良いエントロピーは得られません。塩として何を使用する必要がありますか? を参照してください。. 要約: 一意で予測不可能な値をエンコードします。

$hash = substr(hash("sha512", $clear_text), 0, 20).$salt;

ハッシュを複数回繰り返す必要があります。パスワードを安全にハッシュする方法を参照してください。概要: PBKDF2、BCrypt、SCrypt がこれを提供します。

これは狡猾だろうか

いいえ、コードも読み取られた場合、それは本質的に無関係です。

そして、それは良い考えでしょうか

将来それを維持しなければならなかった人にとっては、迷惑になる可能性が高い. ハッシュ形式を変更すると誰かが混乱する可能性があるという点で、おそらく悪い考えではありませんが、 The valid role of obscurityを読んで、それを考慮に入れることができます。ハッシュ形式を変更する場合は、暗号化キーなしで攻撃できないように、その努力を暗号化に費やしてください。キーを見つける努力はおそらく同じですが、防御する方がはるかに簡単な決定になります.

于 2013-02-14T22:30:16.970 に答える