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

md5パスワードを作成してmysqlに保存するにはどうすればよいですか?

    2017/11/09を編集:Oジョーンズからの回答を必ず確認してください。

    まず、MD5は、この試行に使用できる最高のハッシュ方法ではありません。sha256またはsha512

    そうは言っても、hash('sha256')を使用しましょう md5()の代わりに プロセスのハッシュ部分を表すため。

    最初にユーザー名とパスワードを作成するときに、生のパスワードをソルトでハッシュします(各パスワードにランダムな余分な文字を追加して、パスワードを長く/強くします)。

    ユーザーの作成フォームから次のように表示される場合があります:

    $escapedName = mysql_real_escape_string($_POST['name']); # use whatever escaping function your db requires this is very important.
    $escapedPW = mysql_real_escape_string($_POST['password']);
    
    # generate a random salt to use for this account
    $salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
    
    $saltedPW =  $escapedPW . $salt;
    
    $hashedPW = hash('sha256', $saltedPW);
    
    $query = "insert into user (name, password, salt) values ('$escapedName', '$hashedPW', '$salt'); ";
    

    ログインすると、次のようになります。

    $escapedName = mysql_real_escape_string($_POST['name']);
    $escapedPW = mysql_real_escape_string($_POST['password']);
    
    $saltQuery = "select salt from user where name = '$escapedName';";
    $result = mysql_query($saltQuery);
    # you'll want some error handling in production code :)
    # see http://php.net/manual/en/function.mysql-query.php Example #2 for the general error handling template
    $row = mysql_fetch_assoc($result);
    $salt = $row['salt'];
    
    $saltedPW =  $escapedPW . $salt;
    
    $hashedPW = hash('sha256', $saltedPW);
    
    $query = "select * from user where name = '$escapedName' and password = '$hashedPW'; ";
    
    # if nonzero query return then successful login
    


    1. ISNULL()に相当するPostgreSQLとは何ですか

    2. MYSQLは特定の行のみをダンプします

    3. Drupal8でクエリを作成する方法

    4. 最初と最後の出現でグループ化