sql >> データベース >  >> RDS >> Mysql

PHPとMySQLでハッシュを塩漬けにする

    まず第一に、DBMS(MySQL)は暗号化ハッシュをサポートする必要はありません。 PHP側ですべてを行うことができ、それはあなたがすべきことでもあります。

    ソルトとハッシュを同じ列に格納する場合は、それらを連結する必要があります。

    // the plaintext password
    $password = (string) $_GET['password'];
    
    // you'll want better RNG in reality
    // make sure number is 4 chars long
    $salt = str_pad((string) rand(1, 1000), 4, '0', STR_PAD_LEFT);
    
    // you may want to use more measures here too
    // concatenate hash with salt
    $user_password = sha512($password . $salt) . $salt;
    

    ここで、パスワードを確認する場合は、次のようにします。

    // the plaintext password
    $password = (string) $_GET['password'];
    
    // the hash from the db
    $user_password = $row['user_password'];
    
    // extract the salt
    // just cut off the last 4 chars
    $salt = substr($user_password, -4);
    $hash = substr($user_password, 0, -4);
    
    // verify
    if (sha512($password . $salt) == $hash) {
      echo 'match';
    }
    

    phpass をご覧ください。 、これもこの手法を使用します。これは、とりわけソルティングを使用するPHPハッシュソリューションです。

    WolfOdradeがリンクしている質問への回答を必ず確認してください。



    1. SQLServerでのIN句の制限

    2. SQLServerの「時間」ストレージサイズを理解する

    3. mysql_real_escape_string()の使用中にエラーが発生しました

    4. コンテナオーケストレーションツールを使用せずにMariaDBGaleraクラスターを実行する:パート1