1. Con una cuenta podrás:

    • Publicar preguntas y pedir ayuda
    • Crear tutoriales
    • Acceder a contenido privado
    • Convertirte en un Héroe de la web
    Cerrar notificación
  2. Eres nuevo en la comunidad y necesitas ayuda?
    Sigue estos pasos y recomendaciones antes de publicar tu duda:
    Cerrar notificación

Tutorial Encriptación cesar.

Tema en 'Tutoriales de Javascript' comenzado por gammafp, 14 de Septiembre de 2015.

  1. gammafp

    gammafp
    Moderador
    Miembro del Equipo

    Se incorporó:
    12 de Enero de 2015
    Mensajes:
    825
    Me gusta recibidos:
    399
    Puntos de trofeos:
    63
    Género:
    Hombre
    Cifrado césar.

    Hola a todos hoy os traigo un entretenido cifrado, con todos ustedes damas el cifrado césar.
    El cifrado césar es un cifrado simple que se basa en la sustitución por desplazamiento de las letras mediante una llave que es simplemente un numero en la cual se suman los desplazamientos.

    Por ejemplo tenemos la letra A cuya llave es un 3 cual seria el desplazamiento para cifrarlo con cesar, pues será A.. b.. c.. Dseria la letra "D" ya que hemos desplazado tres pasos empezando por la "A" que seria el cero, el "B" que seria el uno el "C" que seria el segundo y el tercero seria "D", entonces A = D.
    Ahora por ejemplo si ponemos un mensaje como "hola" y ponemos una llave 3 tendríamos que trasladar tres pasos las letras y nos daría como resultado "krod" y porqué da krod pues porque hemos trasladados tres pasos a las letras de este modo.
    h = k // porque h0, i1, j2, K3 // la letra a la derecha son los pasos saltados.
    o = r // porque o0, p1, q2, R3
    l = o // porque l0, m1, n2, O3
    a = d // porque a0, b1, c2, D3

    Y bueno con esto podemos pasar a programarlo en JavaScriopt, el algoritmo para lograr esto es simple.
    Primero tenemos una función llamada Cesar la cual se le pasan dos valores el string y la llave
    Código (Text):

    function Cesar(str, key) {
     ....
    }
     
    Luego una vez creada nuestra función dentro creamos una variable para pasar el string y otra que tendremos una expresión regular para agregar caracteres especiales y saltarlos.
    con la variable str la igualamos a str.toLowerCase() para convertirlo a minúsculo todo.

    Código (Text):

    function Cesar(str, key) {
        var gamma = '';
        var patron = /[ñ áéíóúääëïöüàèìòù_@$]/;
        str = str.toLowerCase();
    }
     
    Una vez escrito hasta donde lo llevamos agregaremos un for para recorrer el string y dentro del for podemos encontrarnos con una condicional que nos ayudará a separar los caracteres espaciales de los cuales no son.
    Los caracteres especiales entraran en el for y serán agregados a la variable que iniciamos vacia en este algoritmo se llama gamma = ' ';
    el valor chartAt(i) es para recorrer las letras.
    Cuando no se encuentra un carácter especial se procede a usar un módulo el cual nos ayudará a transportar las letras el módulo es el siguiente. (El módulo fue donado por un amigo mio)
    Código (Text):

    gamma+= String.fromCharCode( 97 + ( str.charCodeAt(i) + 7 + key )%26 );
     
    Y luego devolvemos la variable gamma. acá os dejo el código entero una vez terminado:
    Código (Text):

    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="UTF-8">
        <title>cesar</title>
        <style>
            body {
                display: flex;
                flex-direction: column;
                align-items: center;
            }
            input#out {
                margin-top: 200px;
                width: 200px;
            }
           
        </style>
    </head>
    <body>
       
       <input type="text" id="out" disabled>
       
        <script>
            function Cesar(str, key) {
                var gamma = '';
                var patron = /[ñ áéíóúääëïöüàèìòù_@$]/;
                str = str.toLowerCase();

                for(var i = 0; i < str.length; i++){
                    if(patron.test(str.charAt(i))){
                        gamma+= str.charAt(i);
                    }
                    else{
                        gamma+= String.fromCharCode( 97 + ( str.charCodeAt(i) + 7 + key )%26 );
                       
                    }
                }
                return gamma;
            }
           
            var gammafp = Cesar('Hola mi nombre es gammafp', 3);
            var obj = document.getElementById('out');
            obj.value = gammafp;
        </script>
    </body>
    </html>
     
    Y el resultado de todo esto es el siguiente.
    [​IMG]

    -----------------------------------------------------------------------------------------
    Algunas dudas que pueden surgir.
    .toLowerCase() //convierte en minúsculas las letras
    .length // Cuenta la cantidad de letras en el string (en este caso)
    .test() // Compara expresiones regulares
    .charAt() // Nos sirve para obtener una letra donde ponemos un numero en los paréntesis lo cual será el espacio donde está la letra.
    .charCodeAt() // Obtenemos el código ascii de la letra. se mete un numero entre los paréntesis para obtener una letra que está en esa posición.
    return // devuelve algun elemento.

    Bueno con esto lo tenemos hecho, saludos y ya nos hablamos por el foro. Hasta pronto.
     

Comparte esta página