![]() |
| Estás en: Juan Rodríguez [Consultor] > JavaScript > Índice de guiones > Codificación de cadenas alfanuméricas < |
Verificado en: Opera 9.02 y 9.20Opera 6.05, 7 y 8 Firefox 1.5 y 3.0b5 Mozilla 1.8 Netscape 7 Internet Explorer 6 y 7 |
Utilidad compuesta de dos guiones. El primero codifica y el segundo descodifica, en ambos casos, cadenas alfanuméricas. La codificación lo es por sustitución de caracteres más uno. Es decir, la cadena "de" la codifica como "ef" basándose en el abecedario castellano. A cada letra de entrada, le asigna la siguiente ("+1") en el abecedario. Así la palabra "Internet" la codifica como "Jñufsñfu". Puede cambiarse la fórmula y que codifique sumando dos ("+2") o cualquier otro sistema, aunque ello no es seguro. Las combinaciones no son tantas y lo que es peor, es fácil de descifrar por sistemas automáticos que jueguen con "+1", "-3", "*5" etc. Es preciso tener en cuenta que una fórmula como [ 1 +2 +3 -4 =2 ] tiene el mismo resultado que [ 3 -1] o que [ (100/2) -49 +1 ], por poner sólo unas de los millones de combinaciones posibles. Es decir: no hay resultado único en base a una fórmula matemática; el mismo resultado puede conseguirse de diferentes alternativas, a veces incluso insospechadas, por lo que la seguridad de un sistema de codificación/decodificación no radica en su complejidad matemática. Las matemáticas son las mismas para todos, El ingenio no tanto. Es por ahí donde hay que buscar sistemas seguros. |
Si se desea personalizar la codificación, lo más eficaz es cambiar el abecedario que sirve de referencia. En lugar del conocido "ABCDEF..." poner "AKI50CMJ..." o cualquier otra combinación aleatoria sin más precaución que no repetir letras o números. Así, por ejemplo, la palabra "de" la codificaría (con la misma fórmula, +1) por "0c". Para descifrarlo es necesario saber la fórmula y, sobre todo, el abecedario que sirve de referencia. Así y sabiendo que cambiamos cada letra por la siguiente ("+1"), ante la palabra ya codificada "guapo" ¿cual es la palabra original? Romper un sistema así estructurado es un poco más complicado. Hay que jugar con todas las combinaciones de todas las letras (mayúsculas, minúsculas y números), que son unos cuantos miles de millones y eso no está al alcance de cualquiera. Otra ventaja de cambiar el abecedario de referencia, es la facilidad para alternar entre claves por días, semanas, ... Si el cambio se hace a nivel de fórmula corremos el riesgo de errores de cálculo (pensar que hay que hacer una fórmula inversa para la decodificación). Por contra un mismo abecedario clave nos sirve tanto para codificar como para descodificar. No hemos de preocuparnos por la inversa, que por cierto, en estos guiones es "-1". |
Ejemplos de aplicación de este guión | ||
Instalación Ver código Descargar + guiones
Código en el cuerpo (body) de la página
<script type="text/javascript">
<!-- inicio
function codificar(texto){
clave="0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ*";
resultado=' ';
for (cont=0; cont<texto.length; cont++)
{ caracter=texto.substring(cont,cont+1);
posic=clave.indexOf(caracter);
codigo=clave.substring(posic+1,posic+2);
resultado+=codigo; }
document.getElementById("form1").codificado.value=resultado;}
// final -->
</script>
<form name="form1" action="">
<input name="original" type="text" size="25" value="(texto a codificar)">
<input type='button' value="Codificar" onclick="codificar(this.form.original.value)">
<input name='codificado' type="text" size="25">
</form>
<script type="text/javascript">
<!-- inicio
function Descodificar(texto){
clave="0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ*";
resultado=' ';
for (cont=0; cont < texto.length; cont++)
{ caracter=texto.substring(cont,cont+1);
posic=clave.indexOf(caracter);
codigo=clave.substring(posic-0,posic-1);
resultado+=codigo; }
document.getElementById("form2").descodificado.value=resultado;}
// final -->
</script>
<form name="form2" action="">
<input name="precodificado" type="text" size="25" value="(texto a descodificar)">
<input type='button' value="Descodificar" onclick="Descodificar(this.form.precodificado.value)">
<input name='descodificado' type="text" size="25">
</form>
Copyright ©
Juan Rodríguez y
Begues Internet s.l.
Todos los derechos reservados
Aviso Legal
Cuidar de nuestro entorno natural,
puede y debe ser cosa de todos.
Por ejemplo, no gastando papel para
imprimir una información que siempre
puedes tener en la pantalla de tu pc.
- -
Juan Rodríguez [Consultor]
Barcelona, Begues, Castelldefels