No SciFi author foresaw this: we are building clans around languages we speak to the Machine.
— Vyacheslav Egorov (@mraleph) July 18, 2012
Tags » ‘Programacion’
Desde la versión 5.3, PHP nos ofrece funciones anónimas (o una suerte de) a las que casi casi podemos considerar First-class citizens.
Luego de experimentar un poco en un pequeño proyecto, estas son mis pequeñas conclusiones.
Introducción
Dentro de las numerosas “mejoras” que provee CoffeeScript con respecto a JavaScript plano, podemos mencionar el operador `splat` (nombre que toma de Ruby) también conocido como `spread`, que básicamente permite agrupar los argumentos que excedan los declarados en la firma del método/función en un único argumento en forma de lista (un array en JavaScript, para ser más preciso).
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
Si tenía que decir algo confidencial, lo escribía usando el cifrado, esto es, cambiando el orden de las letras del alfabeto, para que ni una palabra pudiera entenderse. Si alguien quiere decodificarlo, y entender su significado, debe sustituir la cuarta letra del alfabeto, es decir, la D por la A, y así con las demás.
Suetonio, Vida de los Césares 56
Entre los cifrados más básicos (y clásicos sin duda), encontramos el famoso código César, nombre que identifica a cierta variante del cifrado afín, el cual es uno de los tantos cifrados de sustitución. Este tipo de cifrados fueron muy populares en tiempos antiguos ya que ofrecían cierto grado de seguridad de manera muy accesible.
