0
将新用户插入数据库时,我想散列密码。这是我得到的。php哈希函数检查数据库
static function getLastId(){
global $database;
$sql = 'SELECT ID from users ORDER BY id DESC LIMIT 1' ;
$result = $database->query($sql);
return $result;
}
static function create_user($username,$password){
global $database;
$lastID = self::getLastId() + 1;
$ePassword = $database->escape_value($password);
$hash = hash('sha256', $lastID . $ePassword);
$sql = "INSERT INTO ". self::$table_name . " (username, password, first_name, last_name, power) VALUES ";
$sql .= "('{$database->escape_value($username)}', '{$hash}', 'asd' , 'asd', 'user') ";
$query = $database->query($sql);
return ($query)? true : false;
}
当我这样做$ lastID的打印或VAR转储我得到13.不过找一个数据库我只有1个用户的我,以1为ID我甚至截断的表,但我仍然得到13.不知道为什么。
基本上这个想法是,我想追加$ lastID到密码,所以这是很难倒过来。为了登录目的,我需要知道下一个ID将会是什么。
您应该使用盐来代替这是最后的想法。你可以在这里了解它:http://phpsec.org/articles/2005/password-hashing.html – 2011-05-30 13:25:54
而不是使用sha256,尝试使用更安全的算法,如bcrypt:[http://codahale.com/how- to-safely-store-a-password /](http://codahale.com/how-to-safely-store-a-password/) – 2011-05-30 13:33:16