Hızlı bir şekilde bu PHP + TUZ uygulanmasını kontrol edin - çalışmıyor?

0 Cevap php

Temel bir kullanıcı uygulamak için orada öğreticiler Bina + tuz ile sisteme giriş kaydol. Şu anda ben kaydolmak sahne için bu kullanıyorum:

define('SALT_LENGTH', 9);

function generateHash($plainText, $salt = null)
{
    if ($salt === null)
    {
        $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);
    }
    else
    {
        $salt = substr($salt, 0, SALT_LENGTH);
    }

    return $salt . sha1($salt . $plainText);
}

$newpass = generateHash($_POST['newpass']);

followed by:

$sql = "INSERT INTO user SET
              userid = '$_POST[newid]',
              password = PASSWORD('$newpass'), ... etc"

Bu çalışıyor.

Ben şimdi (ayrı erişim kontrol dosyası) eşitlik kontrol etmek için giriş şifrenizi karşılaştırmak istiyorum:

define('SALT_LENGTH', 9);

function generateHash($plainText, $salt)
{

    $salt = substr($salt, 0, SALT_LENGTH);

    return $salt . sha1($salt . $plainText);
}

$sql = "SELECT password FROM user WHERE
        userid = '$uid'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);


$comparepwd = generateHash($pwd, $row['password']);


if (mysql_num_rows($result) == 0 || $comparepwd != $row['password']) {

//access denied, unset session variables
}

Prensip olarak ben bu işe gerektiğine inanıyoruz. Ben bunu çalışmıyor neden tavsiye eğer ben son derece minnettar olacaktır PHP / MySQL ile oldukça yeni. Çok teşekkürler!

EDIT: Sadece fark, çünkü öyle

INSERT INTO user SET
                  userid = '$_POST[newid]',
                  password = PASSWORD('$newpass')

ŞİFRE ('$ newpass') ayrıca MySQL hasing yapar?

0 Cevap