13
Company LOGO www.testset.com.br Criptografia de dados em PHP

Criptografia Em PHP

Embed Size (px)

Citation preview

Page 1: Criptografia Em PHP

Company LOGO

www.testset.com.br

Criptografia de dados em PHP

Page 2: Criptografia Em PHP

www.testset.com.br

Company LOGO

Introdução a criptografia

• Criptografia (Do Grego kryptós, "escondido", e gráphein, "escrita").

• Desde a antiguidade houve a necessidade de envio e recebimento de mensagens sigilosas. O crescimento foi maior na Segunda Guerra Mundial, e anos depois com o surgimento da internet.

• Tem-se a mensagem original M, a chave criptográfica (regra) K e a mensagem criptografada C, assim temos:

K(M) = C

• Na maioria dos casos temos que ter a chave de decriptação D, que é a regra para da mensagem criptografada voltar à mensagem original:

D(C) = M

Page 3: Criptografia Em PHP

www.testset.com.br

Company LOGO

Criptografia Simétrica

• Uma definição sucinta de chave simétrica é que é utilizado uma única chave pra decifrar e criptografar dados, essa chave é compartilhada apenas por duas ou mais pessoas que tem em mente manter uma conexão e ligação confidencial da informação. Também tem-se em mente que essa chave é conhecida apenas por essas pessoas.

Page 4: Criptografia Em PHP

www.testset.com.br

Company LOGO

Criptografia Assimétrica

• É um método de criptografia que utiliza duas chaves, uma publica e outra privada. A publica é de acesso de todos e a privada é de acesso apenas do dono. A mensagem é criptografada com a chave publica e só é descriptografada pela sua chave privada.

Page 5: Criptografia Em PHP

www.testset.com.br

Company LOGO

Criptografia no PHP

• O uso da criptografia no PHP é o mais variado possível, vai desde encriptação de formulários, senhas, arquivos e até encriptação de XML.

Principais funções do PHP que implementam Criptografia

• Alguns Exemplos de funções no PHP que utilizam criptografia:

• base64_encode() / base64_decode()

• md5()

• sha1()

• cript()

• md5_file()

• sha1_file()

Page 6: Criptografia Em PHP

www.testset.com.br

Company LOGO

Usando base64_encode()

• Codifica dados binários tratando-os numericamente, retornando uma string na base 641 do tipo MIME2 que trafegam sobre camadas de transporte que não são 8-bit clean (sistema que resolve caracteres de 8bits), como mensagens de e-mail.

• Dados codificados na Base-64 tem aproximadamente 33% mais espaço que dos dados originais.

• Usa-se a função base64_decode() para decodificar a mensagem.

$texto = “informação”;echo base64_encode($texto); // RESULTADO: ZWRzb24=

$texto1 = “ZWRzb24=”; // para voltar:echo base64_decode($texto1); // RESUTADO: informação

2 MIME = Multipurpose Internet Mail Extensions. Tipos de extenções comuns que trafegam na rede.1 Base64 = Constituída por 64 caracteres ([A-Za-z0-9], "/" e "+") que dão origem ao seu nome.

Page 7: Criptografia Em PHP

www.testset.com.br

Company LOGO

base64_encode e base64_decode, em conjunto com a função strrev.

//function to encrypt the stringfunction encode5t($dado) { for($i=0; $i=5;$i++) { $dado=strrev(base64_encode($dado)); //aplica base64 primeiro depois reverte a string } return $dado; } //function to decrypt the stringfunction decode5t($dado) { for($i=0; $i=5;$i++) { $dado=base64_decode(strrev($dado)); //apply base64 first and then reverse the string } return $dado; }

Page 8: Criptografia Em PHP

www.testset.com.br

Company LOGO

Usando md5()

• É um algoritmo de hash de 128 bits unidirecional (não há retorno). É muito utilizado por softwares com protocolo ponto-a-ponto3.

• Sua sintaxe é string md5 ( valor [, booleano] );

• Calcula o hash4 em conjunto com “RSA Data Security, Inc. MD5 Message-Digest Algorithm”, e como resultado retorna uma string de 32 caracteres com valor hexadecimal ou 16 caso seja passado o argumento booleano como TRUE.

$texto = “informação";echo md5($texto);

//RESUTADO: cd4fbce046c46f107e45ae0ddd0db7d3

3 Ponto-a-ponto = Peer-to-peer - é uma topologia de redes caracterizada pela descentralização das funções na rede, onde cada terminal realiza tanto funções de servidor quanto de cliente. 4 Hash = É um método de cifrar dados de forma a manter a sua integridade. Ele cria uma string de tamanho fixo a partir de uma cadeia de caracteres de qualquer tamanho.

Page 9: Criptografia Em PHP

www.testset.com.br

Company LOGO

Usando crypt()

• Sua sintaxe é string crypt(valor);

• Retorna uma string e em geral implementa o algoritmo de encriptação Unix Standard DES-based5.

$texto = “informação";echo crypt($texto);

// RESUTADO: $1$fs2.68/.$VM9iirUeSlJvl4WPWZZmx0

5 DES = Método de encriptação em que a string é dividida em oito caracteres e estes são restringidos a 7 bits cada, originando uma chave de 56 bits. Desde 1999 é considerado um script inseguro.

Page 10: Criptografia Em PHP

www.testset.com.br

Company LOGO

Usando sha1()

• Foi considerado o sucessor do MD5, é a melhor e mais estável das funções de hash SHA. Os algoritmos SHA foram desenhados pela National Security Agency (NSA 6) e publicados como um padrão do governo Norte-Americano.

• Calcula a hash sha1 usando “US Secure Hash Algorithm 1”, e retorna esta hash. A hash é um número hexadecimal de 40 caracteres.

<?php$str = 'apple';

if (sha1($str) === 'd0be2dc421be4fcd0172e5afceea3970e2f3d940') {    echo "Senha válida";    exit;}?>

6 NSA = Método de encriptação em que a string é dividida em oito caracteres e estes são restringidos a 7 bits cada, originando uma chave de 56 bits. Desde 1999 é considerado um script inseguro.

Page 11: Criptografia Em PHP

www.testset.com.br

Company LOGO

Usando md5_file() e sha1_file()

• Tanto a função md5() quanto sha1() possuem seus equivalentes para gerar hash de arquivos. Isso é util no caso de se verificar a integridade do conteúdo dos mesmos.

<?php$str = ‘arquivo.doc';

if (sha1($str) === 'd0be2dc421be4fcd0172e5afceea3970e2f3d940') {    echo “Arquivo válido";    exit;}?>

Page 12: Criptografia Em PHP

www.testset.com.br

Company LOGO

Exemplo Prático

• http://www.testset.com.br/home/cripto.php

Page 13: Criptografia Em PHP

www.testset.com.br

Company LOGO

Bibliografia

• http://www.google.com.br

• http://pt.wikipedia.org

• http://forum.imasters.uol.com.br

• http://revistaphp.com.br

• http://phpavancado.net

• http://php.net

Recursos avançados de criptografia em PHP

• http://www.php.net/manual/pt_BR/intro.mcrypt.php

Obrigado