CATEGORIAS

Criptografia descomplicada com PHP

Muitas pessoas não dão a devida importancia à segurança de dados,
em especial as senhas.Muito guardam senhas sem nenhuma criptografia,
e isso pode acarretar em vários problemas.


Outras pessoas usam hashes(md5,sha1, etc) para codificar os dados,
mas isso tem o inconveniente de não poder descriptografar, e isso é um recurso
útil pois assim é possivel implementar o recurso "recuperar senha" por exemplo.
Uma outra utilidade de criptografia seria a passagem de dados pela URL.
por ex:
ao inves de usar
www.seusite.com.br/pagina.php?p=243&art=vr&lc=ptbr
voce poderia usar
www.seusite.com.br/pagina.php?xWsI0TvEEBlrGkMH6VzSHBnvezukVAY5hFTX

assim ficaria um pouco mais dificil usar XSS, injections, etc.
ja que em caso de qualquer modificação na URL os dados não poderão
serem decodifidados, e assim ficaria facil a detecção de tentativa de adulteração e
interrupção do script;

Para facilitar as coisas, criei para uso próprio uma classe simples porém útil
com ela é possivel (de)codificar strings usando o módulo mcrypt do PHP.
Resolvi compartilha-la pois pode ajudar muito programadores iniciantes.


exemplo de uso

para codificar
echo encript::encode("meu cartão de crédito é 123456789abcdef");

resulta em:
88GiwDFuRg4yIYzjDYIMZl89SF+xldyisoU9NFgIqNh3mm3qFwNuMZOv8MBwz7/w


para decodificar
echo encript::decode("uaQAoJPXKjKtgDkzJFmug6u2yne7QXe2mPVqhTj43V+9YP0hL2PgJ2C4LFUcFh/hiVefnj2vLkU=");








<?php
 
    abstract class encript{
        const key="a senha secreta é 12345";    // chave da criptografia max 24 caracteres
        static public function encode($str){
            $input = $str;
            $rnd=rand(10000000,99999999);
            $td = mcrypt_module_open('tripledes', '', 'ecb', '');
            mcrypt_generic_init($td, self::key, $rnd);
            $encrypted_data = mcrypt_generic($td, $input);
            mcrypt_generic_deinit($td);
            mcrypt_module_close($td);
            return base64_encode($encrypted_data);
        }
        static public function decode($str){
            $input = base64_decode($str);
            return mcrypt_decrypt ( "tripledes" , self::key , $input , "ecb" );
        }

    } // fim classe

 
?>