Imos realizar un pequeno exercicio de criptografía, mediante o famoso método cesar, atribuido ó mesmísimo Xulio César.
Podedes atopar información sobre este método de codificación e os sistemas de decodificación aplicables na wikipedia (http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar).
En primeiro lugar creamos un ficheiro HTML que amose en pantalla un formulario para recoller os datos que imos codificar:
<!DOCTYPE html><HTML><HEAD><TITLE>Formularios</TITLE><!-- Metadatos --><META http-equiv="Content-Type" content="text/html;charset=utf-8"><META name="author" content="Vicente Arosa"><META name="generator" content="Notepad ++"></HEAD><BODY style="color:black; background-color:white"><h2>Formulario encriptacion mediante metodo cesar</h2><FORM name="form001" action="002_cesarEncriptarDesencriptarDesdeFormulario.php" method="get">
Introduza o texto a codificar: <br><input type="text" name="texto"></input><br>
Introduza o salto de codificación / decodificacion: <br><input type="text" name="salto"></input><br><input type="submit" value="Codificar / Decodificar"></input></FORM></BODY></HTML>
Esta páxina envía os datos mediante o método get a unha páxina php que os procesará no servidor, e amosará os resultados no navegador. Neste caso podería usarse, para o envío, tamén o método post, pero eliximos o método get para poder comprobar na dirección que os datos se envían correctamente. Cubrimos o formulario:
Pulsamos o botón "Codificar / Decodificar", co que se producirá a chamada á páxina PHP:
Pódese comprobar na parte final da dirección que os datos se envían correctamente.
O código da páxina PHP será o seguinte:
<!DOCTYPE html><HTML><HEAD><TITLE>Encriptacion cesar</TITLE><!-- Metadatos --><META http-equiv="Content-Type" content="text/html;charset=utf-8"><META name="author" content="Vicente Arosa"><META name="generator" content="Notepad ++"></HEAD><BODY><h2>Encriptacion cesar</h2><?phpfunction letraCesar ($letraSinEncriptar,$salto){//obtense o codigo ascii da letra a encriptar$codigoLetraSinEncriptar=ord($letraSinEncriptar);//sumase tres o codigo da letra a encriptar//obtendo o codigo da letra encriptada$codigoLetraEncriptada=$codigoLetraSinEncriptar+$salto;//obtense o caracter encriptado a partir do seu codigo$letraEncriptada=chr($codigoLetraEncriptada);//devolvese a letra encriptadareturn$letraEncriptada;}function textoCesar ($textoSinEncriptar,$salto){$letraEncriptada;$textoEncriptado="";//recorrese toda a cadeafor($i=0;$i<strlen($textoSinEncriptar);$i++){//enviase cada letra a encriptar$letraEncriptada= letraCesar (substr($textoSinEncriptar,$i,1),$salto);//engadese a letra encriptada á cadea a retornar$textoEncriptado=$textoEncriptado.$letraEncriptada;}return$textoEncriptado;}$v1= textoCesar ($_GET["texto"],$_GET["salto"]);echo($v1);echo("<br>");?></BODY></HTML>
Como se pode comprobar, se subdivide o problema en dous subproblemas, creando unha función para resolver cada un deles. En primeiro lugar o problema da codificación se reduce a codificar cada unha das letras, polo que se crea a función letraCesar que docificará unha única letra, devolvendoa codificada. O segundo problema redúcese a repetir este proceso para cada letra da mensaxe a codificar, deste traballo se encarga a función textoCesar. Finalmente o único que é preciso e realizar unha chamada a esta última función co texto correcto, o cal se recibe a través do array asociativo $_GET.O resultado é o seguinte:
Dada a naturaza da encriptación Cesar o proceso de encriptación é o mesmo que o de desencriptación pero cambiando o signo do salto, neste caso para decodificar un texto codificado será suficiente con indicar que o salto é o mesmo aplicado na codificación, pero en signo negativo.
No caso do exemplo, decodificaremos "Krod" con salto -3:
Actualizóuse a plataforma Moodle do curso, engadindo a posibilidade de descargar o código fonte dos exemplos realizados en clase. Para acceder ás descargas é preciso acceder á sección Exercicios resoltos.
Dentro desta opción, se accede ó listado de arquivos comprimidos en formato zip, dos exemplos resoltos en clase.