Desenvolvimento - PHP
Tutorial - Criptografando senhas em PHP
Aprenderemos neste tutorial como criptografar senhas usando as funções base64_encode, md5 e crypt.
por Rafael CostaArtigo atualizado em 28/05/2008.
Resumo:
Aprenderemos neste tutorial como criptografar senhas usando as funções base64_encode, md5 e crypt.
Tutorial:
Uma das grandes perguntas hoje dos desenvolvedores que estão iniciando em PHP é "como esconder a senha dos meus usuários ?".
Se você está desenvolvendo um projeto e precisa de cadastro/login com senha, é recomendável que use senhas criptografadas, pois caso haja invasão em seu banco de dados, não ir expôr as senhas de seus usuários.
Para isso vamos estudar 3 funções que vão nos auxiliar nessa empreitada, lembrando que nenhum método é 100% seguro, afinal, existem hacker"s que invadem até o sistema do Pentágono, não é mesmo ?!
Listarei abaixo as funções e suas respectivas características.
base64_encode
Codifica utilizando a base64. Poderá ser decodificada utilizando base64_decode.
md5
Retorna um hash em uma string de 32 caracteres. Não pode ser decoficada.
crypt
Retornará uma string criptografada usando o algoritmo de encriptação Unix Standard DES-based ou algoritmos alternativos disponíveis no sistema. Não pode ser decodificada.
Exemplos: base64_encode:
Observação:
Caso você precise fazer uma verificação de senhas, por exemplo, deverá usar este código: if($senhadigitada == md5($senhaguardada)) echo "Login efetuado com sucesso";
crypt:
Observação:
Caso você precise fazer uma verificação de senhas, por exemplo, deverá usar este código:
if(crypt($senhadigitada,$senhaguardada)) == $senhaguardada) echo "Login efetuado com sucesso";
Conclusões
Para fechar nosso tutorial, fica aqui uma conclusão do autor:
Reforço a afirmação de que nenhuma destas 3 funções vai tornar seu sistema 100% imune à ações de hackers e afins, mas dificultará bastante.
Cada função tem seu tempo a ser usada, mas atualmente eu usa a crypt para guardar senhas de usuários, pois não existe função para exibir a senha "verdadeira" e a cada hora ele gera uma string diferente.
Espero que tenham gostado do artigo e qualquer dúvida é só postar nos comentários.
Abraços.
Resumo:
Aprenderemos neste tutorial como criptografar senhas usando as funções base64_encode, md5 e crypt.
Tutorial:
Uma das grandes perguntas hoje dos desenvolvedores que estão iniciando em PHP é "como esconder a senha dos meus usuários ?".
Se você está desenvolvendo um projeto e precisa de cadastro/login com senha, é recomendável que use senhas criptografadas, pois caso haja invasão em seu banco de dados, não ir expôr as senhas de seus usuários.
Para isso vamos estudar 3 funções que vão nos auxiliar nessa empreitada, lembrando que nenhum método é 100% seguro, afinal, existem hacker"s que invadem até o sistema do Pentágono, não é mesmo ?!
Listarei abaixo as funções e suas respectivas características.
base64_encode
Codifica utilizando a base64. Poderá ser decodificada utilizando base64_decode.
md5
Retorna um hash em uma string de 32 caracteres. Não pode ser decoficada.
crypt
Retornará uma string criptografada usando o algoritmo de encriptação Unix Standard DES-based ou algoritmos alternativos disponíveis no sistema. Não pode ser decodificada.
Exemplos: base64_encode:
<?php // Variável com a senha guardada $senha = "mypassword"; $criptografada = base64_encode($senha); echo $criptografada; // Exibe: bXlwYXNzd29yZA== ?>Para decodificar, use base64_decode():
<?php // Variável com a senha guardada $senha = "mypassword"; $criptografada = base64_encode($senha); echo $criptografada; // Exibe: bXlwYXNzd29yZA== echo base64_decode($criptografada); // Exibe: "mypassword" ?>md5:
<?php // Variável com a senha guardada $senha = "mypassword"; $criptografada = md5($senha); echo $criptografada; // Exibe: 34819d7beeabb9260a5c854bc85b3e44 ?>Não existe função para decodificar md5.
Observação:
Caso você precise fazer uma verificação de senhas, por exemplo, deverá usar este código: if($senhadigitada == md5($senhaguardada)) echo "Login efetuado com sucesso";
crypt:
<?php // Variável com a senha guardada $senha = "mypassword"; $criptografada = crypt($senha); echo $criptografada; ?>Uma das vantagens da crypt é que, a cada hora que você tentar gerar uma senha nova, o valor retornado será diferente, o que não acontece com md5.
Observação:
Caso você precise fazer uma verificação de senhas, por exemplo, deverá usar este código:
if(crypt($senhadigitada,$senhaguardada)) == $senhaguardada) echo "Login efetuado com sucesso";
Conclusões
Para fechar nosso tutorial, fica aqui uma conclusão do autor:
Reforço a afirmação de que nenhuma destas 3 funções vai tornar seu sistema 100% imune à ações de hackers e afins, mas dificultará bastante.
Cada função tem seu tempo a ser usada, mas atualmente eu usa a crypt para guardar senhas de usuários, pois não existe função para exibir a senha "verdadeira" e a cada hora ele gera uma string diferente.
Espero que tenham gostado do artigo e qualquer dúvida é só postar nos comentários.
Abraços.