/** * Validate a password against the specified salted and hashed password. * * @param string $password string to salt and hash * @param string $goodHash previously salted and hashed string in the format algorithm:iterations:salt:hash * @return boolean true if the two passwords match and false otherwise * * <code> * $goodHash = Pbkdf2::createHash($password); * $isValid = Pbkdf2::validatePassword($password, $goodHash); * </code> */ public static function validatePassword($password, $goodHash) { $params = explode(":", $goodHash); if (count($params) < self::HASH_SECTIONS) { return false; } $pbkdf2 = base64_decode($params[self::HASH_INDEX]); return slowEquals($pbkdf2, self::pbkdf2($params[self::HASH_ALGORITHM_INDEX], $password, $params[self::HASH_SALT_INDEX], (int) $params[self::HASH_ITERATION_INDEX], strlen($pbkdf2), true)); }
function validateHashedPassword($password, $correctHash) { $params = explode(":", $correctHash); if (count($params) < HASH_SECTIONS) { return false; } $pbkdf2 = base64_decode($params[HASH_PBKDF2_INDEX]); return slowEquals($pbkdf2, pbkdf2($params[HASH_ALGORITHM_INDEX], $password, $params[HASH_SALT_INDEX], (int) $params[HASH_ITERATION_INDEX], strlen($pbkdf2), true)); }
function login_panel($data) { $email = $data['email']; $query = $this->db->query("SELECT id,email,password,salt,role FROM user WHERE email=? AND (role=1 OR role=2)", array($email)); if ($query->num_rows() > 0) { $user = $query->row(); $password = hash('sha256', $user->salt . $data['password']); $this->load->helper("jacksecure_helper"); if (slowEquals($user->password, $password)) { return array("status" => 1, "user" => $user); //Success } else { return array("status" => -1); } //correo/*password incorrectos. } else { return array("status" => -2); } //Usuario inexistente return array("status" => -3); }