Antes de começar a falar de como usarmos a criptografia com PHP, vamos tentar entender um pouco como tudo isso
funciona:
"Criptografia é o ato de codificar dados em informações aparentemente sem sentido, para que pessoas não consigam ter
acesso às informações que foram cifradas. Há vários usos para a criptografia em nosso dia a dia: proteger documentos
secretos, transmitir informações confidenciais pela Internet ou por uma rede local, etc.
O método de criptografia mais difundido utiliza a técnica de chave pública/chave privada. A criptografia é uma fórmula
matemática, fórmula essa que gera duas chaves, uma pública e outra privada (ou secreta).
A chave pública, que qualquer pessoa pode saber, é usada para criptografar os dados. Já a chave privada, que só o
destinatário dos dados conhece, é usada para descriptografar os dados, ou seja, "abrir" os dados que ficaram aparentemente
sem sentido.
O interessante dessa jogada é que a partir da chave pública é impossível descriptografar os dados nem tampouco deduzir
qual é a chave privada. (...)"
Para ver todo o artigo, clique aqui:
Hoje em dia, é muito comum que sistemas de informações utilizem um mecanismo de autenticação para acesso a áreas
restritas através de um login e senha. Por questões de
confidencialidade e segurança, é comum, que as senhas fiquem guardadas de forma criptografada no banco de dados.
Geralmente os algoritmos de criptografia usados para estes casos, são aqueles de via única (unidirecional), ou seja, que não
permitem que um valor codificado seja
descriptografado facilmente. O nome dado a um valor criptografado é "hash".
Vejamos quais as principais funções de criptografia
MD5 - Gera uma sequência binária de 16 bytes (ou 32 símbolos hexadecimais)
//Exemplo de md5
$str_md5 = "Aqui vai um texto qualquer";
$codificacao_md5 = md5($str_md5);
echo "Aqui está o resultado: ". $codificacao_md5;
//fc93f1cd1f0296bd4bfd8950c5c57b1d
sha1 - Gera uma sequência binária de 20 bytes (ou 40 símbolos hexadecimais)
//Exemplo de sha1
$str_sha1 = "Aqui vai um texto qualquer";
$codificacao_sha1 = sha1($str_sha1);
echo "Aqui está o resultado: ". $codificacao_sha1;
//8e25eab2f0c4326bdb34f5d4795a05aa854d340a
base64 - Uma codificação de mão dupla.
//Exemplo de base64
$str_base64 = "Aqui vai um texto qualquer";
$codificacao_base64= base64_encode($str_base64);
echo "Aqui está o resultado: ". $codificacao_base64;
echo "<br /><br />";
$original= base64_decode($codificacao_base64);
echo "Aqui volta o texto original: "."$original";
//Aqui vai um texto qualquer
SHA-512 - Versão melhorada do SHA-265, que por sua vez é uma versão muito melhor do SHA-1.
//Exemplo de SHA-512
$str_sha512 = "Aqui vai um texto qualquer";
$codificacao_sha512 = hash('sha512', $str_sha512);
echo "Aqui está o resultado: ". $codificacao_sha512;
/*
Quebrei em algumas linhas para ficar legivel
827fcdea74dbb2a079b0b93433d87c602
1111a61ce78e7b81c23985290b135ff64910a1f68fd801
378bd28d8f2db24b241a48075b1c1d2aff039468bd576a195
*/
Whirlpool - Mais lento que o SHA-512 e, consequentemente, mais "entrópico", ou seja: mais seguro.
//Exemplo de Whirlpool
$str_Whirlpool = "Aqui vai um texto qualquer";
$codificacao_Whirlpool = hash('whirlpool', $str_sha512);
echo "Aqui está o resultado: ". $codificacao_Whirlpool;
/*
Quebrei em algumas linhas para ficar legível
d2276094e7e3b11ce53ec83a753c4ca855eacd6
cee7cb5d3677081c0625a435abb4b5bb3ae7cc447
b0219d927c47fb96d21a1fe3a79e216dd22bb4633fac73f9
*/
Salsa20 - Gera 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.
//Exemplo de Salsa20
$str_Salsa20 = "Aqui vai um texto qualquer";
$codificacao_Salsa20 = hash('salsa20', $str_Salsa20);
echo "Aqui está o resultado: ". $codificacao_Salsa20;
/*
Quebrei em algumas linhas para ficar legível
0014b06af587198213034b4051268af73769521
fc2e6a029d5dc9bec350b537d241e66ae597692c35ff7c5410b
01c4fec8b48359c2e692202cc6c70d90b6588a
*/
Em um próximo tutorial, vou mostrar como usar isso na prática.
Previamente publicado em:
Abraços!
Todos os Hashs do PHP
[0] => md2
[1] => md4
[2] => md5
[3] => sha1
[4] => sha224
[5] => sha256
[6] => sha384
[7] => sha512
[8] => ripemd128
[9] => ripemd160
[10] => ripemd256
[11] => ripemd320
[12] => whirlpool
[13] => tiger128,3
[14] => tiger160,3
[15] => tiger192,3
[16] => tiger128,4
[17] => tiger160,4
[18] => tiger192,4
[19] => snefru
[20] => snefru256
[21] => gost
[22] => adler32
[23] => crc32
[24] => crc32b
[25] => salsa10
[26] => salsa20
[27] => haval128,3
[28] => haval160,3
[29] => haval192,3
[30] => haval224,3
[31] => haval256,3
[32] => haval128,4
[33] => haval160,4
[34] => haval192,4
[35] => haval224,4
[36] => haval256,4
[37] => haval128,5
[38] => haval160,5
[39] => haval192,5
[40] => haval224,5
[41] => haval256,5