Ver Mensaje Individual
  #11 (permalink)  
Antiguo 11/10/2009, 12:31
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses
Puntos: 1485
Respuesta: SCRIPT que cambia los números por letras

la verdad, no me gusta la idea pero aqui un ejemplo, solo que un par de criterios que tienes que tener en cuenta.
  • aunque se codifica el contenido eso no significa que otros no puedan leer el mensaje original. simplemente inhabilitando javascript podemos ver el mensaje. por lo que supongo que primero tendras que codificar el documento antes de que llegue al cliente. lo puedes hacer con lenguaje servidor o manualmente creas el documento ya codificado. por supuesto, este ultimo no se tolera mucho porque es mas dificil el mantenimiento.
  • a mi parecer, el criterio mas importante. si en el documento original, tambien aparecen numeros, estos podran ser confundidos al momento de decifrar el contenido. se puede corregir pero de momento no tengo buen animo para pensar un buen algoritmo. basicamente lo que haria es escapar los numeros con un backslash cuando se codifique. y para decifrar, determinar si el numero es escapado para tomar la desicion si hay que cambiar su valor o simplemente remover el backslash.
Código:
walk=function(filter){
var array = [];
	for(var node = this.firstChild; node; node = node.nextSibling){
	if(!filter)array.push(node);
	else if(filter(node))array.push(node);
	if(node.firstChild)array = array.concat(arguments.callee.call(node, filter));
	}
return array;
}

function encode(text, value){
if(text.length != value.length)return;
var map = {};
for(var i = 0; i < text.length; i++)map[text[i]] = value[i];
return map;
}

onload = function(){
charset = encode("murcielago", "1234567890");
walk.call(document.body, function(node){
if(node.nodeType != 3)return;
node.nodeValue = node.nodeValue.replace(/\w/g, function(m){
if(charset[m])return charset[m];
return m;
})
})
}
el codigo esta listo para simplemente copiarlo, pegarlo, y comprobarlo en el documento. pero ojo, aun te falta el decifrador que es bastante facil obtenerlo si estudias detenidamente la funcion encode y la expresion regular en replace.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 11/10/2009 a las 16:54 Razón: error en el codigo