Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Silas Martins

[Resolvido] Criptografia de senhas

Recommended Posts

Nesse artigo estarei apresentando, de uma forma simples, a criptografar uma senha em PHP. A criptografia de senhas é bastante usada tendo em vista a segurança, já que somente a pessoa que a cadastrou terá acesso.

 

Para isso, vamos fazer uso da função password().

 

Lembrete: Está função, só criptografa a senha e não tem um método de descriptografia.

 

Exemplo prático

 

1 - Vamos criar uma pequena tabela (tb_teste)

 

CÓDIGO

CREATE TABLE tb_teste (
id_senha int(3) NOT NULL auto_increment,
senha varchar(20) NOT NULL DEFAULT '' ,
cript varchar(30) NOT NULL DEFAULT '' ,
PRIMARY KEY (id_senha)
);

2 - Criar o arquivo que vai fazer a conexão com a nossa base de dados MySQL (conecta.php)

 

CÓDIGO

<?
/* Conecta com um banco de dados MySQL conforme parâmetros enviados (servidor = localhost)
Banco de Dados: $dbname
Porta: $usuário
Senha: $senha*/
$dbname="nomedobd";
$usuário="";
$password="";
//1º passo - Conecta ao servidor MySQL
if(!($id = mysql_connect("localhost",$usuário,$password))) {
echo "<p style="text-align: center;"><big><strong>Não foi possível estabelecer
uma conexão com o gerenciador MySQL. Favor Contactar o Administrador.
</strong></big></p>";
exit;
}
//2º passo - Seleciona o Banco de Dados
if(!($con=mysql_select_db($dbname,$id))) {
echo " <p style="text-align: center;"><big><strong>Não foi possível estabelecer
uma conexão com o gerenciador MySQL. Favor Contactar o Administrador.
</strong></big></p>";
exit;
}
?>

3 - Arquivo que vai criptografar a senha (cript.php)

 

CÓDIGO

<?
include "conecta.php"; //chama o arquivo que conecta ao MySQL
$senha = '123456';
$sql = mysql_query("INSERT INTO tb_teste(senha,cript) VALUES('$senha',password('$senha'))")
or die("ERRO no comando SQL : ".mysql_error());
echo "Senha criptografada";
?>

Como vocês podem ver acima, eu deixei uma senha padrão = 123456. Depois de ter executado o comando acima, veja como vai ficar gravado em nossa base de dados.

 

Id_senha Senha Cript

1 123456 565491d704013245

O campo id_senha é auto_incremento;

O campo senha é o dado sem estar criptografado.

O campo cript é a senha criptografada.

 

Esse é um exemplo simples do uso da função password() para a criptografia de senhas em PHP. Aconselho vocês a modificarem o código para que se possa fazer a adaptação necessária a seu uso.

 

Atenção: Quando for fazer uma pesquisa, você precisa criptografar esse campo também, caso contrário, sua pesquisa não irá retornar nada.

 

Exemplo prático: (pesq.php)

 

CÓDIGO

<?
include "conecta.php"; //Conecta com a nosso banco de dados MySQL

$senha = '123456';
$sql = mysql_query("SELECT senha,cript FROM tb_teste
WHERE
cript = password($senha)") or die("ERRO no comando SQL : ".mysql_error());
if(mysql_num_rows($sql) > 0)
echo "Achei a senha";
else
echo "Não achei";
?>

Dica: Faça um teste, execute o arquivo cript.php para criptografar a senha(123456). Depois de ter feito, execute o arquivo pesq.php, que é o responsável pela pesquisa de senha. Se tudo ocorrer bem, ele deve te informar que ele encontrou a senha. Para concluir, faça o seguinte: mude a linha do SQL do arquivo pesq.php para:

 

CÓDIGO

$sql = mysql_query("SELECT senha,cript FROM tb_teste
WHERE
cript = $senha") or die("ERRO no comando SQL : ".mysql_error());

O que fizemos foi tirar a função password() do SELECT. Como resultado teremos a frase: Não achei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.