Vistas de página en total

martes, 6 de marzo de 2012

Mensaje secreto

Descripción breve:
Un agente envía información codificada mediante la publicación de un carácter ASCII cada día en el periódico. Elige al azar un carácter cualquiera que se corresponde con siete bits, solo puede modificar uno de ellos o ninguno. El carácter modificado o no lo publica.
¿Cuántos bits de información puede enviar diaramente?

http://santiprofemates.wordpress.com/2012/03/01/desafio-51-mensaje-secreto/
El número de bits que se pueden codificar con ese método es 3.
Vamos a utilizar un concepto que llamamos semilla que es de tres bits. La semilla no se envía se calcula tanto por el transmisor como por el receptor.

Calculamos la semilla del número aleatorio mediante la fórmula:
S2 = a + b + c + d
S1 = a + b +  e + f
S0 = a + c + e + g
La operación  + es  la or-exclusiva
Siendo abcdefg el número. Obtenemos S2S1S0
El número que queremos codificar le hacemos la or-exclusiva con la semilla.
El resultado nos dice qué bit debemos cambiar.
En recepción calculamos la semilla que nos dice el valor codificado.
 

Explicación: tenemos la posibilidad de definir tres funciones de paridad en función de los dígitos del número que hemos obtenido aleatoriamente. En la recepción también se  podrán obtener esas mismas funciones. Las tres funciones de paridad han de producir diferentes valores para dos números que difieran en un solo dígito. Esto se consigue si las funciones de paridad se hacen de tal manera que se correspondan con los pesos de la codificación de la posición del dígito:

Posición dígito a cambiar
S2
S1
S0
No hay cambio
0
0
0
1
0
0
1
2
0
1
0
3
0
1
1
4
1
0
0
5
1
0
1
6
1
1
0
7
1
1
1



Así cada cambio de bit se corresponderá con un cambio diferente en la semilla, mientras el 7 = 111 cambiará los tres bits de la semilla.  El 1  = 001 solo cambiará el de menor peso. El 3 cambiará los dos de menor peso. Y así el resto.
Ejemplo: Tenemos el valor 0101010 calculamos la semilla y nos sale: 0, queremos codificar un 7.
7 orx 0 = 7. Debemos modificar el bit 7: 1101010
El receptor ve ese valor  y extrae la semilla = 7. 
Ejemplo; Tenemos el valor 1000010. La semilla es 5. Queremos codificar un 4
5 orx 4 = 1, Debemos modificar el bit 1,  1000011.
El receptor extrae 4 de semilla.