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:
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> <?php function 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 encriptada return $letraEncriptada; } function textoCesar ($textoSinEncriptar, $salto) { $letraEncriptada; $textoEncriptado = ""; //recorrese toda a cadea for ($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:O proceso se pode ver no seguinte vídeo:






No hay comentarios:
Publicar un comentario