Criptografando mensagens com PHP

Ensina um meio de criptografar mensagens, ou seja, de escrever mensagens em códigos, por meio de um algoritmo utilizando Teoria dos Números. Útil para criptografar senhas de sites e enviar mensagens secretas para amigos(as). Pode ser aplicado em qualquer outra linguagem de programação.

[ Hits: 67.751 ]

Por: Laudelino em 05/04/2005


criptografia.php



<html>
<head>
<title>criptografar!</title>
</head>

<body>

<?

/*
  criptografia.php código desenvolvido por laudelino (laudelino7@click21.com.br)
  adapte este código PHP de acordo com suas necessidades.
  caso utilize-o em algum site ou para outro fim qualquer, avise-me, pois gostaria de saber.
*/

// digite a mensagem

// ligue o CAPSLOCK! digite o texto todo em caixa alta.
// ex.: não digite "oi_sou_legal". digite "OI_SOU_LEGAL".
$msg_original = "A_MATEMATICA_EH_LINDA";

// (início) Z_n
function Z_n($x) {

$n = 27; // Z_n

  if ($x >= $n) { // verifica se o valor é maior que 26, se sim, então subtrai 27 até que o valor fique entre 0 e 26. em seguida, exibe o valor em Z_27.
    while ($x >= $n) {
     $x = $x - $n;
    }
    return $x;
  }

  elseif ($x < 0) { // caso o número não seja maior que 26, então verifica se o valor é menor que 0, se sim, soma 27 até que o valor fique entre 0 e 26. em seguida, exibe o valor em Z_27.
   while ($x < 0) {
    $x = $x + $n;
    return $x;
   }
  }
  
  else { // se o valor não for nem maior que 26 nem menor que 0, ou seja, estiver entre 0 e 26, então não há problema e o valor é exibido.
   return $x;
  }
}
// (fim) Z_n

// (início) função que define o cripto-sistema.
function cripto_sistema($x) {
  // a função é da forma f($x)= $a*$x + $b
  $a = 13; // valor de a=13 (para descriptografar a mensagem use a=25)
  $b = 9; // valor de b=9 (para descriptografar a mensagem use b=18)
  
  $fx = ($a * $x) + $b; // calcula o valor da função
  
  $fx = Z_n($fx); // escreve o valor da função "dentro" do conjunto Z_27
  
  return $fx;
}
// (fim) função que define o cripto-sistema.

// (início) função que criptografa.
function criptografa($x) {
  $x = cripto_sistema($x);
  if ($x == 0) { $x = "*0*"; }
  if ($x == 1) { $x = "*1*"; }
  if ($x == 2) { $x = "*2*"; }
  if ($x == 3) { $x = "*3*"; }
  if ($x == 4) { $x = "*4*"; }
  if ($x == 5) { $x = "*5*"; }
  if ($x == 6) { $x = "*6*"; }
  if ($x == 7) { $x = "*7*"; }
  if ($x == 8) { $x = "*8*"; }
  if ($x == 9) { $x = "*9*"; }
  if ($x == 10) { $x = "*10*"; }
  if ($x == 11) { $x = "*11*"; }
  if ($x == 12) { $x = "*12*"; }
  if ($x == 13) { $x = "*13*"; }
  if ($x == 14) { $x = "*14*"; }
  if ($x == 15) { $x = "*15*"; }
  if ($x == 16) { $x = "*16*"; }
  if ($x == 17) { $x = "*17*"; }
  if ($x == 18) { $x = "*18*"; }
  if ($x == 19) { $x = "*19*"; }
  if ($x == 20) { $x = "*20*"; }
  if ($x == 21) { $x = "*21*"; }
  if ($x == 22) { $x = "*22*"; }
  if ($x == 23) { $x = "*23*"; }
  if ($x == 24) { $x = "*24*"; }
  if ($x == 25) { $x = "*25*"; }
  if ($x == 26) { $x = "*26*"; }
  return $x;
}
// (fim) função que criptografa.

// (início) alfabeto.
$A = criptografa(0);
$B = criptografa(1);
$C = criptografa(2);
$D = criptografa(3);
$E = criptografa(4);
$F = criptografa(5);
$G = criptografa(6);
$H = criptografa(7);
$I = criptografa(8);
$J = criptografa(9);
$K = criptografa(10);
$L = criptografa(11);
$M = criptografa(12);
$N = criptografa(13);
$O = criptografa(14);
$P = criptografa(15);
$Q = criptografa(16);
$R = criptografa(17);
$S = criptografa(18);
$T = criptografa(19);
$U = criptografa(20);
$V = criptografa(21);
$W = criptografa(22);
$X = criptografa(23);
$Y = criptografa(24);
$Z = criptografa(25);
$esp = criptografa(26);
// (fim) alfabeto.


// (início) código um
$msg_cifrada = ereg_replace('A',$A,$msg_original);
$msg_cifrada = ereg_replace('B',$B,$msg_cifrada);
$msg_cifrada = ereg_replace('C',$C,$msg_cifrada);
$msg_cifrada = ereg_replace('D',$D,$msg_cifrada);
$msg_cifrada = ereg_replace('E',$E,$msg_cifrada);
$msg_cifrada = ereg_replace('F',$F,$msg_cifrada);
$msg_cifrada = ereg_replace('G',$G,$msg_cifrada);
$msg_cifrada = ereg_replace('H',$H,$msg_cifrada);
$msg_cifrada = ereg_replace('I',$I,$msg_cifrada);
$msg_cifrada = ereg_replace('J',$J,$msg_cifrada);
$msg_cifrada = ereg_replace('K',$K,$msg_cifrada);
$msg_cifrada = ereg_replace('L',$L,$msg_cifrada);
$msg_cifrada = ereg_replace('M',$M,$msg_cifrada);
$msg_cifrada = ereg_replace('N',$N,$msg_cifrada);
$msg_cifrada = ereg_replace('O',$O,$msg_cifrada);
$msg_cifrada = ereg_replace('P',$P,$msg_cifrada);
$msg_cifrada = ereg_replace('Q',$Q,$msg_cifrada);
$msg_cifrada = ereg_replace('R',$R,$msg_cifrada);
$msg_cifrada = ereg_replace('S',$S,$msg_cifrada);
$msg_cifrada = ereg_replace('T',$T,$msg_cifrada);
$msg_cifrada = ereg_replace('U',$U,$msg_cifrada);
$msg_cifrada = ereg_replace('V',$V,$msg_cifrada);
$msg_cifrada = ereg_replace('W',$W,$msg_cifrada);
$msg_cifrada = ereg_replace('X',$X,$msg_cifrada);
$msg_cifrada = ereg_replace('Y',$Y,$msg_cifrada);
$msg_cifrada = ereg_replace('Z',$Z,$msg_cifrada);
$msg_cifrada = ereg_replace('_',$esp,$msg_cifrada);
// (fim) código um

// (início) código dois
$msg_cifrada = ereg_replace('\*0\*','A',$msg_cifrada);
$msg_cifrada = ereg_replace('\*1\*','B',$msg_cifrada);
$msg_cifrada = ereg_replace('\*2\*','C',$msg_cifrada);
$msg_cifrada = ereg_replace('\*3\*','D',$msg_cifrada);
$msg_cifrada = ereg_replace('\*4\*','E',$msg_cifrada);
$msg_cifrada = ereg_replace('\*5\*','F',$msg_cifrada);
$msg_cifrada = ereg_replace('\*6\*','G',$msg_cifrada);
$msg_cifrada = ereg_replace('\*7\*','H',$msg_cifrada);
$msg_cifrada = ereg_replace('\*8\*','I',$msg_cifrada);
$msg_cifrada = ereg_replace('\*9\*','J',$msg_cifrada);
$msg_cifrada = ereg_replace('\*10\*','K',$msg_cifrada);
$msg_cifrada = ereg_replace('\*11\*','L',$msg_cifrada);
$msg_cifrada = ereg_replace('\*12\*','M',$msg_cifrada);
$msg_cifrada = ereg_replace('\*13\*','N',$msg_cifrada);
$msg_cifrada = ereg_replace('\*14\*','O',$msg_cifrada);
$msg_cifrada = ereg_replace('\*15\*','P',$msg_cifrada);
$msg_cifrada = ereg_replace('\*16\*','Q',$msg_cifrada);
$msg_cifrada = ereg_replace('\*17\*','R',$msg_cifrada);
$msg_cifrada = ereg_replace('\*18\*','S',$msg_cifrada);
$msg_cifrada = ereg_replace('\*19\*','T',$msg_cifrada);
$msg_cifrada = ereg_replace('\*20\*','U',$msg_cifrada);
$msg_cifrada = ereg_replace('\*21\*','V',$msg_cifrada);
$msg_cifrada = ereg_replace('\*22\*','W',$msg_cifrada);
$msg_cifrada = ereg_replace('\*23\*','X',$msg_cifrada);
$msg_cifrada = ereg_replace('\*24\*','Y',$msg_cifrada);
$msg_cifrada = ereg_replace('\*25\*','Z',$msg_cifrada);
$msg_cifrada = ereg_replace('\*26\*','_',$msg_cifrada);
// (fim) código dois

// (início) exibe o texto-original e o seu respectivo texto-cifrado.
echo "texto-original: ".$msg_original;
echo "<br>\n<br>\ntexto-cifrado: ".$msg_cifrada;
// (início) exibe o texto-original e o seu respectivo texto-cifrado.
?>

</body>
</html>
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Conceitos básicos
   3. Iniciando com o PHP
   4. Implementando o cripto-sistema
   5. Criptografando
   6. criptografia.php
   7. Descriptografando uma mensagem
   8. Adicionando símbolos no alfabeto
   9. Considerações finais e referências
Outros artigos deste autor

Método de Newton e PHP

Programando PostgreSQL + PHP

PostgreSQL: comandos básicos

Leitura recomendada

Introdução a manipulação de erros em PHP

Instalações PHP não seguras

Pentesting on PHP apps: XSS

Segurança em PHP

Dicas básicas de segurança no PHP

  
Comentários
[1] Comentário enviado por kimmay em 06/04/2005 - 15:11h

Muito bom mano..

parabiensss...

[2] Comentário enviado por pacoca em 06/04/2005 - 17:34h

quero deixar meus parabens ao artigo descrito acima, se tinha alguma dúvida sobre.... elas acabaram.
São artigos desse nível que faz com que o vol seja o que é hoje, ponto de referencia para profissionais da área ensinarem e aprenderem cada vez mais.

[3] Comentário enviado por WhiteFox em 06/04/2005 - 21:28h

Muito bom seu Artigo!

Haveria a possiilidade de colocar o [espaço] no script ? Como ?

Obrigado e Parabéns!

[4] Comentário enviado por djrosario em 17/03/2006 - 14:21h

Não entendi como a função g(x) é a inversa de f(x), se um pressuposto para isto é que ela deve satisfazer a condição f(g(x))=x e isto não se verifica nas funções apresentadas no artigo?

[5] Comentário enviado por removido em 24/04/2006 - 18:09h

Muito válido esse seu artigo, gosto da área de criptografia, está sendo muito válido para meu apredizado, parabéns.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts