Cifrado César en 149 caracteres

En la entrada anterior presente distintos variantes del cifrado afín, dentro de las cuales el cifrado César es la más conocida.

Para el cifrado César en particular, podemos reducir el costo de implementación utilizando los char codes, pasando de esta implementación a una más reducida:

function caesarCipher(o) {
    function t(o, s) {
        return s.replace(/./g, function(c) {
            return String.fromCharCode(c.charCodeAt(0) + o)
        })
    }
    return {
        encrypt: t.bind('', o),
        decrypt: t.bind('', -o)
    }
}

Siendo su uso bastante sencillo:

// Crea un cifrador/descifrado con offset 3
var offset3 = caesarCipher(3);

offset3.encrypt('Hello world'); // "Khoor#zruog"
offset3.decrypt('Khoor#zruog'); // "Hello world"

Como nota de color, hay que destacar que el uso del método Function.bind lo cual reduce su utilización a browsers que implementen ecma-262 versión 5.

Lamentablemente, aún en su versión más reducida no llega a los ansiados 140 caracteres 🙁



Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Comment

You may use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>