1
チュートリアルを構築して基本ユーザーのサインアップ+塩入りシステムへの実装を実現しました。現時点で私はサインアップの段階でこれを使用しています:このPHP + SALTの実装をすばやく確認してください - 動作しませんか?
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"
これは問題なく動作します。
私は今、(別々のアクセス制御ファイル内)の等価性をチェックするために、入力されたパスワードを比較したい:原則として
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
}
私は、これは動作するはずと信じています。私はPHP/MySQLでかなり新しくなっています。なぜそれがうまくいかないのかアドバイスできればとっても感謝しています。どうもありがとう!
EDIT:
INSERT INTO user SET
userid = '$_POST[newid]',
password = PASSWORD('$newpass')
PASSWORD( '$のNEWPASS')はさらにMySQLのhasingを行うためだけで実現は、それを何ですか?