Jump to content
santans

Para que serve o comando md5 no php mysql e como usalo

Recommended Posts

Olá @santans, tudo bem?

 

31 minutos atrás, santans disse:

vi ele sendo usado em um tutorial

Apenas uma observação introdutória: Provavelmente não era um tutorial muito recente, pois o md5 é tido atualmente como uma função falha em termos de segurança e em desuso em aplicações mais recentes.

Uma boa substituta é a SHA-256.

 

33 minutos atrás, santans disse:

parece ser algum tipo de criptografia.

É, parece mesmo, mas não é!

Todo mundo confunde isso, mas é bom separarmos os conceitos de hash com criptografia:

1 - Hash não é utilizada exclusivamente para segurança. Um dos maiores usos é para a performance na consulta de informações.

O hash não é feito para ser recuperado. Quando você utiliza md5 para converter "teste" para "698dc19d489c4e4db73e28a713eab07b", por exemplo, você não está preocupado em como fazer o processo inverso.

 

2 - Criptografia é feito para "ofuscar" uma mensagem/informação, mas que depois deverá ser "desofuscada" pelo receptor, para que possa ser lida. Eram muito ligadas às guerras, para esconder mensagens dos inimigos enquanto se comunicam entre os aliados.

 

41 minutos atrás, santans disse:

gostaria de saber pra que serve e como usa-lo

Bom, você provavelmente viu seu uso em um tutorial de cadastro/login de usuários, certo?

É extremamente comum armazenarmos as senhas dos usuários em hashes pelos seguintes motivos:

1 - Você não quer saber qual a senha do usuário, apenas quer se certificar de que ele próprio saiba.

2 - Você não quer que mais ninguém saiba.

3 - Caso ainda assim alguém descubra, você não gostaria que ele pudesse descobrir o que aquela hash representa (a senha de fato), certo?

 

Bom, então você armazena todas as senhas no banco de dados pelas suas respectivas representações no determinado algoritmo HASH (no caso em questão md5).

Daí você me pergunta: bom... e como eu verifico a senha dele pra fazer o login? Simples: você converte a senha que ele informou no login para hash e verifica se esse hash é igual ao que está armazenado no banco.

 

Exemplo: usuário 123 possui a senha teste. A hash da senha teste armazenada no banco é "698dc19d489c4e4db73e28a713eab07b".

O usuário informou "test" como senha para fazer o login. Você converteu para md5 e verificou que o resultado disso é "098f6bcd4621d373cade4e832627b4f6". São completamente diferentes, certo? Então a senha informada está incorreta.

 

Veja alguns algoritmos e seus respectivos resultados de exemplo: http://php.net/manual/pt_BR/function.hash.php#104987

 

Veja também como utilizar hash de forma mais eficiente e segura (atente para o termo SALT. Ele é importante): https://pt.stackoverflow.com/questions/2402/como-fazer-hash-de-senhas-de-forma-segura

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 thaless94
      <?php
      include_once("conexao.php");
      $filtro = isset($_GET['filtro'])?$_GET['filtro']:"";
      $sql = "select * from usuarios where profissao like'%$filtro%' order by nome";
      $consulta = mysqli_query($conexao,$sql);
      $registros = mysqli_num_rows($consulta);

      ?>
      <!DOCTYPE html>
      <html lang="pt-br">
          <head>
              <meta charset="utf-8">
              <title>Sistema de Cadastro</title>
              <link rel="stylesheet" href="_css/estilo.css">
          </head>
          <body>
              <div class="container">
                  <nav>
                      <ul class="menu">
                          <a href="index.php"><li>Cadastro</li>
                          <a href="consulta.php"><li>Consultar</li></a>
                      </ul>
                  </nav>
                  <section>
                      <h1>Consultar</h1>
                      <hr><br><br>
                      <form method="get" action="">
                          Filtrar profissão: <input type="text" name="filtro" class="campo" required autofocus>
                          <input type="submit" value="Pesquisar" class="btn">
                      </form>    
                      <?php
                      echo "<br>Resultado da pesquisa com a palavra: $filtro <br><br>";
                      echo "<br>$registros Registros encontrados.";
                      while($exibirRegistros = mysqli_fetch_array($consulta)){
                          $codigo = $exibirRegistros[0];
                          $nome = $exibirRegistros[1];
                          $email = $exibirRegistros[2];
                          $profissao = $exibirRegistros[3];

                          echo "<article>";
                          echo "$codigo<br>";
                          echo "$nome<br>";
                          echo "$email<br>";
                          echo "$profissao<br>";    

      ---->             echo "<input type='submit' name='filtro' class='btn_alterar' value='Excluir' href='excluir.php'/> ";
                          echo "</article>";
                      }
                      mysqli_close($conexao);
                      ?>
                  </section>
              </div>
          </body>
      </html>
       
      -------------------------------------------------------------------------------------
       
      querendo puxar de outra página "excluir.php", para aquele botão
       
      <?php
      include_once("conexao.php");
      $codigo = 6;
      $id = "delete from usuarios where codigo = '$codigo'";
      $resultado = mysqli_query($conexao,$id);

      //mysqli_close($conexao);
      ?>
    • By FabianoBSB
      Bom dia pessoal.
      Preciso de uma ajuda para realizar uma busca em uma chave de um array que tem um href e um src.
      A linha é essa:
      [description] => <div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-SqGrd2c9OBU/WeX5PvXWMuI/AAAAAAAAqhQ/hez3wcpKMQQOKAIjEEugOAvI2tLrwC0WwCLcBGAs/s1600/17102017%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="266" data-original-width="400" height="265" src="https://2.bp.blogspot.com/-SqGrd2c9OBU/WeX5PvXWMuI/AAAAAAAAqhQ/hez3wcpKMQQOKAIjEEugOAvI2tLrwC0WwCLcBGAs/s400/17102017%25283%2529.jpg" width="400" /></a> o que quero é só pegar o link dessas duas tags.
      Obrigado
    • By AndréJs
      Olá, eu tenho uma pequena dúvida. Eu gosto de validar formulários embaixo do html, segue o código.
      <form name="form" action="log.php" method="post" > <div class="text_email" ><h3>Email:</h3></div> <input type="text" name="logemail" placeholder="Email" class="logemail" value="'89gmail.com" required="true"> <div class="text_senha" ><h3>Senha:</h3></div> <input type="password" name="logsenha" placeholder="Senha" class="logsenha" required="true" autocomplete="off"> <input type="submit" value="Logar" class="logar" > </form> </body> </html> <p class='email_invalido'>Email invalido</p><style> .logemail{ box-shadow: 5px 1px 5px red; }</style> E um formulário normal esse código eu peguei do meu localhost no "exibir código fonte". como eu falei a validação com php fica em baixo do  html isso pode geral algum erro futuramente?
×

Important Information

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