Autor Tema: Criptografia

0 Usuarios y 1 Visitante están viendo este tema.

05 Diciembre, 2013, 09:08 pm
Leído 1611 veces

galilea

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 19
  • Karma: +0/-0
  • Sexo: Femenino
 Hemos interceptado el mensaje
12 52 48 48 49 12 57 52
y nuestras fuentes nos aseguran que se ha usado para codificarlo un algoritmo exponencial con n = 77 y clave k = 43. ¿Que dice el mensaje?

05 Diciembre, 2013, 10:04 pm
Respuesta #1

pierrot

  • pabloN
  • Moderador Global
  • Mensajes: 3,447
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Hola Galilea.

Supongamos que la precodificación fue hecha con la siguiente tabla de conversión:

\( \begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
A & B & C & D & E & F & G & H & I & J & K & L & M\\
\hline
10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22\\
\hline
N & O & P & Q & R & S & T & U & V & W & X & Y & Z\\
\hline
23 & 24 & 25 & 26 & 27 & 28 & 29 & 30 & 31 & 32 & 33 & 34 & 35\\
\hline
\end{array}
 \)

El mensaje está encriptado en bloques: \( b_1=12,\;b_2=52,\dots,\;b_8=52 \). Para desencriptar cada bloque tienes que aplicar la siguiente función de decodificación:

\( D(b_i)=b_i^d\pmod{n} \)

donde \( n=77 \) y \( d \) es el inverso de \( k=43 \) módulo \( \phi(77)=(7-1)(11-1)=60 \).

Haz las cuentas...

Spoiler
El mensaje es:

CORRECTO
[cerrar]
$_="loe  hnachaPkr erttes,urJ";$j=0;for($i=0;s/(.)(.{$j})$//;$i++){$_=$2.$_,$j+=1-$i%2,print$1}print

05 Diciembre, 2013, 11:01 pm
Respuesta #2

galilea

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 19
  • Karma: +0/-0
  • Sexo: Femenino
Hola Galilea.

Supongamos que la precodificación fue hecha con la siguiente tabla de conversión:

\( \begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
A & B & C & D & E & F & G & H & I & J & K & L & M\\
\hline
10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22\\
\hline
N & O & P & Q & R & S & T & U & V & W & X & Y & Z\\
\hline
23 & 24 & 25 & 26 & 27 & 28 & 29 & 30 & 31 & 32 & 33 & 34 & 35\\
\hline
\end{array}
 \)

El mensaje está encriptado en bloques: \( b_1=12,\;b_2=52,\dots,\;b_8=52 \). Para desencriptar cada bloque tienes que aplicar la siguiente función de decodificación:

\( D(b_i)=b_i^d\pmod{n} \)

donde \( n=77 \) y \( d \) es el inverso de \( k=43 \) módulo \( \phi(77)=(7-1)(11-1)=60 \).

Haz las cuentas...

Spoiler
El mensaje es:

CORRECTO
[cerrar]

Pero lo que no entiendo es cómo se harían las cuentas para hacer eso porque yo llegué a esa conclusión pero no a cómo hacer las cuentas..

05 Diciembre, 2013, 11:09 pm
Respuesta #3

pierrot

  • pabloN
  • Moderador Global
  • Mensajes: 3,447
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Primero tienes que hallar el inverso de 43 módulo 60. Eso es resolver la congruencia

\( 43x\equiv 1\pmod{60} \)

o equivalentemente, la siguiente ecuación diofántica

\( 43x+60k=1 \)

Para eso usa el algoritmo extendido de Euclides.

Una vez resuelta esa congruencia, llegarás a que \( d=7 \). Por último hay que desencriptar cada bloque. Hagámoslo para \( b_1 \) a modo de ejemplo. Tenemos que calcular

\( 12^7\pmod{77} \)

Naturalmente, podríamos multiplicar \( 12\times 12\times \cdots\times 12 \) (siete veces) y hallar el resto al dividir entre 77 pero eso es poco práctico. Lo que hacen las computadores es aplicar un método que se llama exponenciación rápida. Para hacer las cuentas a mano, te aconsejo que expreses el exponente en base 2:

\( 7=(111)_2=2^2+2^1+2^0 \)

Entonces \( 12^7=12^4\cdot 12^2\cdot 12 \). Se tiene que

\( 12^2=144\equiv -10\equiv 67\pmod{77} \)

luego

\( 12^4=(12^2)^2\equiv (-10)^2=100\equiv 23\pmod{77} \)

Así,

\( 12^7=12^4\cdot 12^2\cdot 12\equiv 67\cdot 23\cdot 12\equiv 12\pmod{77} \)

12 corresponde a la letra C, de ahí sale la primer letra de "CORRECTO".
$_="loe  hnachaPkr erttes,urJ";$j=0;for($i=0;s/(.)(.{$j})$//;$i++){$_=$2.$_,$j+=1-$i%2,print$1}print