Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucas Peperaio

Criptografia PHP

Recommended Posts

Preciso criptografar um cookie, de forma que somente eu (o detentor do algoritmo) saiba como entender.

Ok, sei que muitos estão pensando..porque não usar MD5 ou SHA1?

Bem, porque eu preciso de uma senha que não possa ser descriptografada, e Base64, MD5 e SHA1 podem em muitos casos, ser facilmente decodificadas por este site:

http://www.md5decrypter.co.uk/

 

Eu preciso então, de uma funçãozinha para codificar / decodificar.

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Lucas Peperaio! :D

 

Assim! criptografia, existem funções prontas no php e boas como voce sabe! ;)

 

Porém o conceito de "não poder ser descriptografada", é matematicamente possível, um dia ou uma hora ela será decodificada, existem programas(muitos até) que só fazem é analizar padrões de repetições ou caracteres chaves e aplicar o método de descriptografar.

 

Alguém realmente disposto a decifrar sua chave, terá que levar muitos e muitos meses ou até anos usando um pc comum para tal feito, ele conseguiria, mas talvez não nessa vida kkkk!, por isso esses meios atuais de criptografia são os mais confiáveis e usuais no mercado.

 

Pode confiar e utilizar eles! :joia:

Para que voce sinta mais segurança no que há atualmente leia isso:

 

Tipos de Criptografia UFRJ

Segurança IGD Now

 

Vai ai uma função de exemplo do ROT13 com Base64

        <?php
function rot13encrypt ($str) {
   return str_rot13(base64_encode($str));
   }

function rot13decrypt ($str) {
   return base64_decode(str_rot13($str));
   }

// exemplo de uso

$string = "Cifra gerada usando a criptografia ROT13 e depois Base64 do PHP";

$encrypted = rot13encrypt ($string);

$decrypted = rot13decrypt ($encrypted);

echo $encrypted;
echo "<br/>";
echo $decrypted;

       ?>

 

Voce pode e deve continuar a tentar criar seu próprio algoritimo, isso feito e se for bom tipo "inquebrável", voce ficará rico da noite pro dia! ^_^

 

Em tempo!

Pode parecer besteira, mas muitos programadores hoje em dia ainda usam ROT13 e o Zenit Polar como forma de criptografar seus programas e proteger seus fontes, o que eles fazem é simplesmente incrementar o ROT13 e o Zenit Polar com mais artifícios inclusive algoritimos comerciais de forma a personalizar o seu próprio algoritimo dificultando ainda mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A imaginação é sim importante... mas dependendo do caso seria mais prudente usar a biblioteca mcrypt.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, inventar uma criptografia que só você sáiba, é simples, o que você terá de ter é criatividade. Exemplo:

Converter o número 1 para a letra A com o str_replace(); e assim vai indo.

 

Outro método, também, é você fazer junção com o nome em MD5 e alguma string ou algo que você possa identificar, tipo um rand(A,Z);, separando o HASH MD5 da SENHA.

 

Agora, quem cria o algorítimo é você. E como nosso amigo jonny_quest disse, a descriptografia vai da lógica matemática.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@OP

 

Você está enganado. Este site não decodifica MD5, não!

O que ele faz é usar os chamados rainbow tables, que são tabelas que contém uma string e a sua versão com MD5. Essa tabela geralmente consiste de milhões de strings, e assim ele vai comparando a sua string MD5 com as que ele tem na tabela, até encontrar um resultado (ou não).

Por tanto, isso só seria uma falha se a sua string estivesse na tabela, geralmente sendo alguma palavra do dicionário e afins.

 

O melhor jeito de impedir isso é usar um salt. A função crypt do php, por exemplo, permite que você use um salt sem problemas:

 

<?php
$string = 'minhasenha';
$stringCriptografada = crypt($string, 'meusalt$!1313');
$stringMd5 = md5($string.'meusalt$!1313');

 

Etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A imaginação é sim importante... mas dependendo do caso seria mais prudente usar a biblioteca mcrypt.

 

Eu não conhecia esta biblioteca, vou dar uma pesquisada melhor sobre ela.valeu

 

Cara, inventar uma criptografia que só você sáiba, é simples, o que você terá de ter é criatividade. Exemplo:

Converter o número 1 para a letra A com o str_replace(); e assim vai indo.

 

Outro método, também, é você fazer junção com o nome em MD5 e alguma string ou algo que você possa identificar, tipo um rand(A,Z);, separando o HASH MD5 da SENHA.

 

Agora, quem cria o algorítimo é você. E como nosso amigo jonny_quest disse, a descriptografia vai da lógica matemática.

 

Então, com as respostas de vcs eu decidi criar a minha própria função, misturando caracteres ou adicionando um salt no meio.

 

@OP

 

Você está enganado. Este site não decodifica MD5, não!

O que ele faz é usar os chamados rainbow tables, que são tabelas que contém uma string e a sua versão com MD5. Essa tabela geralmente consiste de milhões de strings, e assim ele vai comparando a sua string MD5 com as que ele tem na tabela, até encontrar um resultado (ou não).

Por tanto, isso só seria uma falha se a sua string estivesse na tabela, geralmente sendo alguma palavra do dicionário e afins.

 

O melhor jeito de impedir isso é usar um salt. A função crypt do php, por exemplo, permite que você use um salt sem problemas:

 

<?php
$string = 'minhasenha';
$stringCriptografada = crypt($string, 'meusalt$!1313');
$stringMd5 = md5($string.'meusalt$!1313');

 

Etc.

 

Ok, vou dar uma olhada na crypt tbm. Só uma pergunta, a crypt do PHP permite a decodificação?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ok, vou dar uma olhada na crypt tbm. Só uma pergunta, a crypt do PHP permite a decodificação?

Se eu não me engano, só interna.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde novamente Lucas Peperaio :)

até ontem mesmo se não me engano eu postei uma dúvida aqui bem pertinente a esse assunto e é parte de um trabalho daqui da empresa para desenvolver algo com relação a produção de tickets anti-fraude baseado em QRCode, como não prosigo no projeto não sei dizer tudo, só sei que fiz uma função que transforma letras em numeros e virce e versa baseado em uma "grelha" de informações, que é parte de algo maior.

 

Mas acho que te serve de inspiração na criação do seu algoritimo.

veja abaixo:

<html>
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <title></title>
   </head>
   <body>
<form action="index.php" method="post">
Codifica: <input type="text" name="cfname" />
<br/>
Decodifica: <input type="text" name="dfname" />
<input type="submit" />
</form>
<br/>
<br/>
<br/>
<?php
       /*Codificador*/
       function converte($valor){
           /*Array associativo*/
           $tabela = array("00"=>"A","01"=>"B","02"=>"C","03"=>"D","04"=>"E",
               "05"=>"F","06"=>"G","07"=>"H","08"=>"I","09"=>"J","10"=>"K",
               "11"=>"L","12"=>"M","13"=>"N","14"=>"O","15"=>"P","16"=>"Q",
               "17"=>"R","18"=>"S","19"=>"T","20"=>"U","21"=>"V","22"=>"W",
               "23"=>"X","24"=>"Y","25"=>"Z");
           /*Quebro a string em um array de duas casas*/
           $quebra = str_split($valor, 1);
           /*Pego o tamanho desse array*/
           $b = count($quebra);
           /*Loop até que termine o tamanho de $b*/
           for($a=0; $a < $b; $a++){
           /*Busco no array em caixa alta as strings na tabela*/
           $mkey = array_search(strtoupper($quebra[$a]),$tabela);
           echo $mkey;
           }
       }
       /*Decodificador*/
       function reverte($valor){
           /*Array associativo*/
           $tabela = array("A"=>"00","B"=>"01","C"=>"02","D"=>"03","E"=>"04",
               "F"=>"05","G"=>"06","H"=>"07","I"=>"08","J"=>"09","K"=>"10",
               "L"=>"11","M"=>"12","N"=>"13","O"=>"14","P"=>"15","Q"=>"16",
               "R"=>"17","S"=>"18","T"=>"19","U"=>"20","V"=>"21","W"=>"22",
               "X"=>"23","Y"=>"24","Z"=>"25");
           /*Quebro a string em um array de duas casas*/
           $quebra = str_split($valor, 2);
           /*Pego o tamanho desse array*/
           $b = count($quebra);
           /*Loop até que termine o tamanho de $b*/
           for($a=0; $a < $b; $a++){
           /*Busco no array em caixa alta as strings na tabela*/
           $mkey = array_search(strtoupper($quebra[$a]),$tabela);
           echo $mkey;
           }
       }

if ($_POST) {
   $dsc_nome = $_POST["cfname"];
   $cdc_nome = $_POST["dfname"];

   echo 'Codificado: ';
   echo converte($dsc_nome);
   echo "<br/>";
   echo 'Descodificado: ';
   echo reverte($cdc_nome);

}
?>

   </body>
</html>

 

Espero que ajude mais ainda! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Lucas, por favor:

use o Responder Azul respondery.png

ou a 'Resposta Rápida'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.