leitura de
Encontrou um problema no conteúdo? Por favor, deixe seu comentário!

Hoje trago até vocês a minha mais recente “descoberta” no PHP: os métodos de criptografia Sha512, Whirlpool e Salsa20.

Todos os três são criptografias de alto nível que geram strings de 128 caracteres com chances absurdamente remotas de colisão.

Todos os três são criptografias de mão única, ou seja, a única coisa que você pode fazer com a string depois de criptografada é comparar com outra string para ver as duas são iguais… Não há como “descriptografar” a string gerada por esses algoritmos.

Para usar esses métodos de encriptação você precisará usar a função hash() do PHP.

SHA-512

O SHA-512 é a versão melhorada do SHA-265, que por sua vez é uma versão muito melhor do SHA-1.

Para encriptar uma string usando SHA-512, no PHP, você pode fazer assim:

Ao executar o código acima você verá uma string de 128 caracteres, é essa string que você deve salvar no banco de dados para manter a senha realmente segura.

O resultado dessa encriptação com SHA-512 é algo assim (quebrei em três linhas para ficar “legível):

3b1efb1934a56460904a2ae4782490d06057985a1524 5bb887ed4cda89e82cfa3c4ab2589686cb1828228c8e 6d252aa5272cbf1b1ec44978e302d5f7b7cd4641

Whirlpool

O Whirlpool é um pouco mais lento que o SHA-512 e, conseqüentemente, mais “entrópico”, ou seja: mais seguro.

Para encriptar uma string usando Whirlpool, no PHP, você pode fazer assim:

O resultado desse Whirlpool será algo assim:

f13697ecb3e10789449ed839f224376b633eadbe3739 c07c7843bf91a86f4374d3697924e3c396cfeb777b56 d38700c41e032c21c4fce52d5f59024969536c74

Salsa20

E por fim, mas tão poderoso quanto, o Salsa20 é outro algoritmo de encriptação que irá gerar uma string de 128 caracteres. O Salsa20 foi criado para encriptação de stremings/transmissões, mas pode ser usado com strings simples também.

Para encriptar uma string usando Salsa20, no PHP, você pode fazer assim:

O resultado desse Salsa20 será algo assim:

56a296fad140971d0fcd1577bd0c66348e69a835e9f4 56857a0e9f43e8fe540ad4488099875daaf8741df89f9 6abb8c6cd08ed842db33b2ea356737fc2cb0aef

Salvando esses dados no banco de dados

Para salvar esse tipo de dado [criptografado] você pode usar um campo CHAR(128) pois sabemos que sempre teremos 128 caracteres ali.

Encontrando registros criptografados no banco de dados

Suponhamos que você queira encontrar um usuário no seu banco de dados comparando a senha digitada (no formulário de login) com a senha armazenada utilizando o método Whirlpool.

O código PHP para montar a consulta SQL seria mais ou menos assim:

Espero que tenha gostado! :)

Thiago Belem / Blog

Thiago Belem


Publicado

Thiago Belem / Blog

Thiago Belem / Blog

Artigos e tutoriais sobre desenvolvimento WEB

Continue lendo