Como Criptografar Senhas Com a Linguagem de Programação PHP

Criptografia de senhas com PHP

O assunto que vai ser abordado neste artigo é a criptografia de senhas com a linguagem de programação PHP, não é segredo para ninguém que é importante ter credenciais para poder acessar certas áreas em um sistema web ou qualquer outro sistema que exija autenticação para o acesso do mesmo.

Os dados de acesso do usuário que tem as credenciais pode conter diversos atributos, exemplos de atributos são, nome, cpf e permissão, dependendo da permissão que esse usuário tiver, esse usuário poderá ou não ter acesso a mais áreas do sistema.

Eu comecei mencionando um pouco sobre a parte de acesso as certas áreas do sistema a partir das credenciais porque hoje você vai ver como fazer a encriptação de um dos campos mais importante.

Eu acredito que você já possa ter uma ideia de qual campo eu estou me referindo, geralmente para fazer a autenticação em um sistema, você vai precisar de um usuário ou e-mail e uma senha previamente cadastrados no sistema.

O campo que vamos trabalhar neste artigo é o campo “senha“, eu não sei se você sabe, mas, antes da senha ser cadastrada no sistema, essa senha deve ser encriptada, mas por que cadastrar a senha encriptada? É altamente recomendado fazer encriptação das senhas por questão de segurança.

Há muitos usuários que usam o mesmo usuário e senha em diversos sistemas, caso alguém consiga invadir o banco de dados e pegar as credenciais dos usuários, este alguém não vai conseguir saber as senhas dos usuários, pois as mesma estão encriptadas.

O foco deste artigo vai ser a linguagem de programação PHP, mas também há outras linguagens que também permitem fazer a encriptação das senhas.

O que é a linguagem de programação PHP?

Antes de partimos para os exemplos que mostraram como fazer criptografia das senhas, será mostrado um breve resumo sobre a linguagem de programação PHP, caso você saiba o que é essa linguagem, pule para a próxima parte deste artigo.

Em um breve resumo, PHP é uma linguagem de programação Back-end, sabendo PHP, você será capaz de criar sistemas web que cria páginas dinâmicas, todo código PHP é interpretado no servidor e gera um código HTML dinâmico, nenhum código PHP é enviado para o client-side, são enviados apenas para o client-side HTML,CSS e JavaScript.

Atualmente há centenas de sistemas que estão sendo feitos com php e também há outros centenas de sistemas que estão ativos e gerando resultados.

A sintaxe dessa linguagem é semelhante a de outras, se você já tem um conhecimento base na linguagem JavaScript, você vai estar com um pedaço do caminho percorrido, exemplos de sistemas que você poderá criar com PHP são: gestão de clientes, controle de estoque, loja virtual e rede social.

Se você sabe criar sistemas com essa linguagem, eu acredito que você poderá ganhar dinheiro em qualquer lugar, até mesmo em sua casa.

Aprenda programar e desenvolver sistemas profissionais

Como as senhas são comparadas?

Você sabe como a senha que estar criptografada no banco de dados é comparada com a senha que o usuário coloca no formulário? Antes das senhas serem comparadas para validar se o usuário inseriu a senha correta, é preciso primeiramente fazer a encriptação da senha que o usuário inseriu no formulário.

O método que será usado para criptografar a senha do formulário deve ser o mesmo que foi usado para criptografar a senha que estar no banco de dados, logo depois que a senha do formulário é encriptada, é feito a validação se as senhas correspondem, se corresponderem, é feito a autenticação no sistema.

Mas, se não corresponderem, não será feito a autenticação no sistema, e será apresentado uma mensagem de erro. 

Como fazer criptografia de senhas com PHP?

Na linguagem de programação PHP há algumas maneiras para fazer a encriptação das senhas antes de serem salvas no banco de dados, logo mais adiante você vai ver uma lista de possíveis formas que você pode usar para esse fim.

Mas preste bastante atenção em qual método você vai escolher para criptografar as senhas, pois, há meios para criptografar as senhas que não são mais seguros de usar atualmente, para você sempre saber qual é o método mais indicado para fazer a encriptação das senhas, sempre acompanhe as atualizações da linguagem.

Quando há uma nova atualização, esta atualização pode trazer novos recursos e recomendações de uso. 

Funções para gerar hash não recomendadas

A primeira parte desta lista vai mostrar as funções que tem no PHP que geram hash, mas por questão de segurança, você deve evitar essas funções em um projeto, pois, o algoritmo destas hash foram projetados para ser rápidos e eficientes.

Uma razão para não usar essas funções é que atualmente os computadores estão mais modernos e veloz, ou seja, esses computadores têm mais poder para descobrir qual é a senha.

MD5

A função md5 gera uma hash com um número hexadecimal de 32 caracteres do tipo de dado string, através RSA Data Security, Inc. MD5 Message-Digest Algorithm.

Estrutura da função:

md5(“senha”)

A função md5 também permite que você coloque um segundo argumento, este argumento pode ser true ou false.

Se você não colocar o segundo argumento, o seu valor padrão é false.

Exemplo.

<?php


$senha = "123456";

$hash = md5($senha);

echo "<b>hash:</b> ". $hash;

?>

Resultado.

hash: e10adc3949ba59abbe56e057f20f883e

Sha1

A função sha1 gera uma hash hexadecimal de 40 caracteres usando US Secure Hash Algorithm 1.

Com essa função também há a possibilidade de colocar um segundo argumento, esse argumento pode ser true ou false, o valor padrão deste argumento é false.

Se você colocar como true, a hash vai ter 20 caracteres e seu formato será binário.

Exemplo.

<?php


$senha = "123456";

$hash = sha1($senha);

echo "<b>hash:</b> ". $hash;

?>

Resultado.

hash: 7c4a8d09ca3762af61e59520943dc26494f8941b

Funções para gerar hash recomendadas

A partir deste momento você vai ver as opções de funções que vão gerar hash mais seguras, esses são os métodos recomendados para gerar hash no momento, as opções que será mostrado logo abaixo são crypt e password_hash.

crypt

A função crypt vai retornar uma string criptografada usando o algoritmo de encriptação Unix Standard DES-based, estrutura da função crypt.

crypt(“senha”,”salt”)

O segundo argumento(“salt”) é opcional, se você não fornecer um salt, o php vai gerar um salt aleatoriamente.

Exemplo sem salt.  

<?php


$senha = "123456";

$hash = crypt($senha);

echo "<b>hash:</b> ". $hash;

?>

Resultado.

hash: $1$9mp7RSsO$BFQABN84CmBdS2j7Jtkuu.

Para comparar se a senha que o usuário colocou no formulário com a senha criptografada, use a função password_verify, veja o exemplo logo abaixo. 

 

<?php


$senha = "123456";

$hash = crypt($senha);

if (password_verify($senha,$hash)) {
    echo "Senha verificada!";
}

?>

password_hash

Usar função password_hash é mais uma forma de criar uma hash fonte, pois usar algoritmo de via única, essa função é compatível com a função crypt.

As opções de algoritmos são PASSWORD_DEFAULT, PASSWORD_BCRYPT E PASSWORD_ARGON2I.

Estrutura da função password_hash.

 password_hash(“senha”, algoritmo);

Exemplo.

<?php


$senha = "123456";

$hash = password_hash($senha,PASSWORD_DEFAULT);

echo "<b>Hash:</b> ". $hash;

?>

Resultado.

Hash: $2y$10$T/rwg6hjYWJyCCQlHUWeWuTno2j1eH/KgpDAr2.FToHz0MNk6d8Hu

Para comparar as senha e validar se o usuário inseriu uma senha correta, você deve usar a função password_verify, exemplo.

password_verify($senha,$hash)

 

Aprenda programar e desenvolver sistemas profissionais

Conclusão

Foi mostrado neste artigo algumas opções de funções, onde você poderá com qualquer uma delas fazer a encriptação de uma senha, mas há funções que não é recomendado o uso, pois você poderá deixar as senhas vulneráveis.

É recomendado que você sempre busque usar uma função que gere um hash forte, desta forma, será muito mais difícil alguém descobrir a senha estando criptografada caso alguém faça uma invasão no banco de dados onde as senhas estão guardadas.

Visite a documentação do PHP para ver outros exemplos de como você pode usar essas funções.

Compartilhe 

Sobre o Autor

Método Programar
Método Programar

Desvende os segredos do mundo tecnológico em nosso blog, aprenda sobre desenvolvimento web e outras tecnologias de forma descomplicada e divertida, vem com a gente desbravar esse universo digital! 💻🚀

    Solicitar exportação de dados

    Utilize este formulário para solicitar a exportação de seus dados.

    Solicitar remoção de dados

    Utilize este formulário para solicitar a remoção de seus dados.

    Solicitar retificação de dados

    Utilize este formulário para solicitar a retificação dos seus dados neste site. Aqui você pode corrigir ou atualizar seus dados por exemplo.

    Solicitar cancelamento de inscrição

    Utilize este formulário para solicitar o cancelamento de inscrição do seu e-mail em nossas Listas de E-mail.