5

SHA1 を使用してパスワードを暗号化しています。元のコードでは、パスワード フィールドが空かどうかを次のようにチェックしました。

現在 SHA1 を使用しており、フィールドを空白のままにすると自動的に da39a3ee5e6b4b0d3255bfef95601890afd80709 が生成されるため、コードを書き直すにはどうすればよいですか?

da39a3ee5e6b4b0d3255bfef95601890afd80709 を文字列に変換しますか? または、他の何か?

助けてください。

    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        // oude password controle
        if ($password == $qpassword)
            $oudpassword_goed = 1;
        // password controle
        if ($newpassword == $newpassword2)
            $newpassword_goed = 1;
        if (empty($newpassword) and (empty($newpassword2)))
            $newpassword_goed = 2;
        // email controle
        if ($email == $email2)
            $email_goed = 1;
    }
4

4 に答える 4

8

ハッシュするに入力を確認してください。

また、使用しないでくださいempty()。これは、パスワードが次の場合に、ユーザーがのパスワードを入力したことを示します0(もちろん、1 文字だけのパスワードを許可していませんよね?)

コードパッド

于 2012-10-16T11:40:15.853 に答える
2

空かどうかをチェックすることができます。da39a3ee5e6b4b0d3255bfef95601890afd80709

ただし、ハッシュする前に空であることを確認することをお勧めします。

于 2012-10-16T11:40:27.490 に答える
1

The SHA1 hash of da39a3ee5e6b4b0d3255bfef95601890afd80709 is a well-known hash of an empty string. Check against this value.

于 2012-10-16T11:41:12.377 に答える
1

パスワードフィールドが空でないかどうかを確認するためにできることはstrlen()、実際に送信している文字列の長さを確認することです.0パスワード フィールドは空であり、データベースに追加しないでください。また、暗号化ハッシュ アルゴリズムであるSHA1ため、元の文字列に戻す方法はありません。これは、その背後にある目的を無効にします。SHA1ハッシュと暗号化の主な違いは、一方は復号化でき、もう一方は復号化できないことです。ただし、これはSHA1ハッシュがブルート フォースできないことを意味するものではありません。ハッシュは確かに簡単なターゲットであり、MD5.

于 2012-10-16T11:44:42.783 に答える