Jump to content

Recommended Posts

Boa noite amigos, armazeno em um mysql senhas geradas pelo seguinte codigo:

 

$name = "name"; 
$email = "email"; 
$password = "pass";

$string = mcrypt_create_iv (24, MCRYPT_DEV_URANDOM); 
$salt = strtoupper(bin2hex ($string));

$hash = hash_pbkdf2 ("sha1", $password, $string, 1000, 24, true); 
$hash = strtoupper(bin2hex ($hash));

//finalmente execute a seguinte consulta:

$qrCreate = "INSERT INTO tc_users (name, email, hashedpassword, salt) VALUES ('$name', '$email', '$hash', '$salt')";
$stCreate = mysql_query($qrCreate) or die ('Erro ao cadastrar em '.$tabela.' '.mysql_error());

esse codigo insere um hash e salt unico nos campos, por mais que insira a mesma senha em outro usuario o hash e salt serao diferentes.

 ai vem a duvida, como eu faço para comparar a senha texto digitada pelo usuario com os dados inseridos no BD, por exemplo,

se eu fizer a seguinte comparacao:

$readTeste = read('tc_users',"WHERE id = '2'");
foreach ($readTeste as $teste);
$pass = $teste['hashedpassword'];
if (password_verify('pass', $pass)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}

so me retorna invalido. function read esta funcionando, se eu printar o resultado da hashedpassword ele retorna os dados do banco ok. minha duvida e como comparar a senha texto com o banco, se é com o hash ou com o salt ou com os dois junto e como. desde ja obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Mduarte87
      Olá boa noite a todos.

      Pesquisei no  forum por esta questão e não encontrei resposta.
      Sou novo nestas andanças mas derivado ao fascínio e á necessidade estou a começar a criar uma pagina para a minha empresa. Está tudo a correr lindamente e apesar de não dominar qualquer tipo de código estou a construir o visual do site sem problemas. Estou a adorar o resultado bem como o trabalho em si. 
      A minha duvida é a seguinte: 
        Eu gostava que uma das minhas paginas tivesse bloqueada por login, até aqui tudo bem de certeza que haverá muitos plugins para isso, mas estou a tentar criar algo mais complexo que vou tentar explicar o melhor possível. 
      A pagina em questão seria um blog o que realmente pretendia era que cada post tivesse uma password diferente. Ou seja os clientes carregavam no link desta pagina situado no menu eram direccionados para um login e ao colocarem a password fornecida eram logo encaminhados para o post respectivo. Eu sei que posso criar um blog e bloquear os posts por password mas assim qualquer cliente ao entrar na pagina iria ver todos os posts existentes carregar naquele que pretende e colocar a password que lhe dei, mas eu nao queria mesmo que os posts estivessem visíveis ao publico em geral da pagina. 
         Não sei se me expliquei bem mas agradeço desde já a toda a comunidade que me possa dar uma dica.
    • By rodrigo-tadeu-rocha@hotmai
      ola preciso desenvolver uma área de cliente personalizada onde ele vai ter acesso aos pedidos feitos na loja , dados pessoais e endereços mais tem um detalhe na hora que ele for rastrear o produto dele quero fazer uma pagina de correio diferente onde posso habilitar um link se possível no plugin para redirecionar o cliente pra uma pagina de correios internacional...(uso o tema oceanWP free)
    • By Antonio Barbosa
      Saudações colegas,
      Sou novo aqui na comunidad e estou com um grave problema, mas que penso ser muito simples.
       
      Normalmente sempre trabalhei com MySQL, nos meus projectos em php sempre trabalhei e tudo funciona perfeitamente, porém, estou numa empresa em que o SGBD é SQL SERVER  e tenho enfrentado alguns problemas, consigo fazer quase tudo que fazia quando o SGBD era MySQL, mas conforme o projecto na empresa vai crescendo, cresce também  a dificuldade de implementar as minha ideias usando o SQL SERVER, cá vai o problema:
       
      Tenho uma tela de Login em que o mesmo faz a requisição no Banco de Dados SQL SERVER, ele funciona 75%, caso eu coloque o Username Errado, ele trás a mensagem Dados Errados, caso eu erre a Senha, ele apresenta a mensagem de Senha Incorrecta, até aqui tudo bem, mas se eu colocar todos os dados correctos, ele não me apresenta nenhuma mensagem e não me renderiza para a página de destino.
       
      Estou a trabalhar com MVC, abaixo segue-se o código.
       
      Controller
       
      function entrar(){
              $data = array();
              $data['username'] = $_POST['nome_utilizador'];
              $data['password'] = sha1($_POST['senha']);
       
              if(!is_null($this->model->verificausername($data))){
                  echo 2;
              }
              else if(!is_null($a = $this->model->verificasenha($data))){
                  
                  echo 3;
              }    
              else if (!is_null($this->model->entrar($data))):
              echo 1;

          endif;
      }
       
      Model
       
      public function entrar($data){
       $sth =  $this->bd->prepare("SELECT *  FROM tKxUsUtilizador WHERE UtCodigo = :username AND UtSenha = :password");
       $sth->execute(array(
          ':username' => $data['username'],
          ':password' => $data['password']
      ));
       $data = $sth->fetch();
       $count = $sth->rowCount();
       if($count > 0):
                  //login
          Session::init();
          Session::set('UtCodigo', $data['UtCodigo']);
            Session::set('UtSenha', sha1($data['UtSenha']));
          Session::set('loggedIn', true);
          return 1;
      else:
          return null;
      endif;
      }
       
      Preciso muito dessa ajuda,
       
      Obrigado.
    • By MasterJ
      nao consigo encontrar o erro neste codigo

       
      <?php  if(isset($_POST['btnLogin'])){   $email = trim($_POST['user_email']);   $upass  = trim($_POST['user_pass']);   $h_upass = sha1($upass);       if ($email == '' OR $upass == '') {       message("Invalid Username and Password!", "error");       redirect("login.php");               } else {     //it creates a new objects of member     $user = new User();     //make use of the static function, and we passed to parameters     $res = $user::userAuthentication($email, $h_upass);     if ($res==true) {         message("You logon as ".$_SESSION['ROLE'].".","success");       if ($_SESSION['ROLE']=='Administrator' || $_SESSION['ROLE']=='Student'){         $_SESSION['ADMIN_USERID'] = $_SESSION['USERID'];         $_SESSION['ADMIN_FULLNAME'] = $_SESSION['FULLNAME'] ;         $_SESSION['ADMIN_USERNAME'] =$_SESSION['USERNAME'];         $_SESSION['ADMIN_ROLE'] = $_SESSION['ROLE'];         unset( $_SESSION['USERID'] );         unset( $_SESSION['FULLNAME'] );         unset( $_SESSION['USERNAME'] );         unset( $_SESSION['PASS'] );         unset( $_SESSION['ROLE'] );          redirect(WEB_ROOT."admin/index.php");       }      }else{       message("Account does not exist! Please contact Administrator.", "error");        redirect(WEB_ROOT."admin/login.php");      }  }  }   ?>   
    • By luisfeliperm2
      Estou criando um sistema de login e cadastro de um jogo em php. Conectei ao postgresql e agora estou com um problema. Preciso saber qual criptografia é utilizada. Todas as hashs possuem 32 caracteres e por isso pensei que fosse MD5. Mas não é.
      password - > 62f9f2022536274b47f4daa0887361cf
      teste1 -> deaafc806aef00d0262e098ff089fff1
      Outras senhas criptografadas:
      59a93faaaf6d43ca4c3ef9ec183200ea
      47d163c4e9388dfd4b2dc7c327a33761
      8dffc56f2382d0f5552c04d9fa014d0e
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.