我开始使用笨的框架,并在其新版本的文档的查看,他们说我应该如何散列密码CI中
不要使用或任何其他加密库供用户密码存储!密码必须进行散列处理,您应该通过PHP自己的密码散列扩展来实现。
的问题是,我使用PHP 5.3和扩展需要5.5
我应该用什么来在PHP 5.3哈希?
我开始使用笨的框架,并在其新版本的文档的查看,他们说我应该如何散列密码CI中
不要使用或任何其他加密库供用户密码存储!密码必须进行散列处理,您应该通过PHP自己的密码散列扩展来实现。
的问题是,我使用PHP 5.3和扩展需要5.5
我应该用什么来在PHP 5.3哈希?
只是我2美分。简单的方法来散列通行证。
function hashPassword($pass, $salt=FALSE) {
// The following will put the $salt at the begining, middle, and end of the password.
// A little extra salt never hurt.
if (!empty($salt)) $pass = $salt . implode($salt, str_split($pass, floor(strlen($pass)/2))) . $salt;
return md5($pass);
}
然后简单的做这样的事情:
function addUser($username, $password) {
$password = $this->hashPassword($password, $username);
$dataIns = array(
'username' => $username
, 'password' => $password
);
if ($this->db->insert('users', $dataIns)) return $this->db->insert_id();
return FALSE;
}
及更高版本:
function attemptLogin($username, $password) {
$query = $this->db->get_where('peeps', array('peepsname' => $username, 'password' => $this->hashPassword($password, $username)));
if ($query->num_rows() == 1) {
$user = $query->result_array()[0];
$sess = $this->setSession($user);
return $user;
}
return FALSE;
private function hash_password($password){
return password_hash($password, PASSWORD_BCRYPT);
}
public function registerUser($username,$email,$password){
$data = array(
'username' => $username,
'email' => $email,
'password' => $this->hash_password($password)
);
return $this->db->insert('table_name', $data);
}
PASSWORD_BCRYPT
- 使用CRYPT_BLOWFISH
算法创建哈希值。这将使用“$ 2y $”标识符产生标准的crypt()
兼容散列。结果将始终为60个字符的字符串,或者失败时为FALSE。
来源:http://php.net/manual/en/function.password-hash.php
您可以使用下面的库建立和基于笨应用验证密码。 它使用PHP password_hash()和password_verify()函数。 您可以使用此库设置成本和哈希算法。在构造函数
https://github.com/prabhateinstein/ci-root/tree/master/application/libraries
装载库:
$this->load->library('password');
要创建密码,使用:
$this->password->hash({$password});
并保存密码进入数据库。
要验证输入的密码:
protected function _verify_credentials($email, $password){
$condition = [
'email' => $email
];
$result = $this->db->from('users')
->where($condition)->get();
if($result->num_rows() === 1){
$user = $result->row_array();
if($this->password->verify_hash($password, $user['password'])){
unset($user['password']);
return $user;
} else {
return false;
}
} else {
return false;
}
}
http://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php/17073604#17073604看到这个最好的我可以参考 – Linus
哪个版本的PHP? https://github.com/ircmaxell/password_compat'PHP> = 5.3.7' – 0x13a
5.3.28, Anmol,谢谢,我将使用其中一个库 – Casad