El cifrado César lleva el nombre de Julio César (100 a. C. - 44 a. C.), quien lo utilizó para comunicaciones militares secretas. El cifrado César es un cifrado de sustitución. Julio César utilizó originalmente un cambio de tres para cifrar y descifrar mensajes. El cifrado se realiza mediante una función afín: f(x)=x+b.
En primer lugar, cada carácter del texto inicial (mensaje a cifrar) se convierte en un número del 0 al 25, correspondiente a su posición en el alfabeto latino que contiene 26 letras --> (a = 0, b = 1... z = 25).
Luego, cada número obtenido se transforma mediante una función afín (f(x) = 1x + b). "x" representa el número, mientras que "b" se define durante el cifrado. "b" es la clave utilizada para descifrar el mensaje final.
Si tomamos todas las imágenes y las ponemos en una lista, obtenemos n números correspondientes a n caracteres del texto inicial. El siguiente paso consiste en encontrar los valores del módulo 26 de cada número. ( Módulo significa resto )
Ejemplo: el módulo 4 de 19 es 3 porque
19 = 4 * 4 + 3
Por otro lado, el módulo 26 de 26 es 0 porque26 = 26 * 1 + 0
Por lo tanto, obtenemos una nueva lista con n elementos, cada uno entre 0 y 25, ambos incluidos. Todos estos números se convierten en letras del alfabeto latino utilizando las tablas siguientes.
Finalmente creamos el mensaje final poniendo todas las letras una al lado de la otra.
Los pasos 1 y 4 se pueden realizar con estas tablas:
A | B | do | D | mi | F | GRAMO | h | I | j | k | l | METRO | norte | oh | PAG | q | R | S | t | Ud. | V | W. | incógnita | Y | z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
Si un atacante sabe que el mensaje ha sido cifrado utilizando el cifrado César, puede intentar todos los cambios (valores b del 1 al 25) para descifrar el mensaje. Esto se llama método de fuerza bruta .
También podemos utilizar el análisis de frecuencia para descifrar el mensaje ya que cada letra está cifrada con el mismo algoritmo y las letras más comunes en inglés son:
Usando las tablas anteriores, ATTACK se puede escribir como: 25 0 19 19 0 2 10 25 Imágenes de cada número:
La nueva lista es: 29 4 23 23 4 6 14 29
Usando el método del módulo 26 , obtenemos:
El mensaje final es 3 4 23 23 4 6 14 3 y usando nuevamente las tablas, las convertimos en el mensaje cifrado:
DEXXEGOD
ZATTACKZ se cifra con la función x + 4 y se convierte en DEXXEGOD .
Usando las tablas anteriores, DEXXEGOD se puede escribir como: 3 4 23 23 4 6 14 3 Imágenes de cada número:
La nueva lista es: -1 0 19 19 0 2 10 -1
Usando el método del módulo 26 , obtenemos:
El mensaje final es 25 0 19 19 0 2 10 25 y usando nuevamente las tablas, las convertimos en el mensaje cifrado:
ZATTACKZ
DEXXEGOD se descifra con la función 1x-4 y se convierte en ZATTACKZ .
A esto se le llama método de fuerza bruta.
Usando las tablas anteriores, DEXXEGOD se puede escribir como: 3 4 23 23 4 6 14 3
a es un número entre 0 y 25. (a = 0 significaría que el mensaje ya está descifrado)
Usando la función f(x) = Mod(1x + a, 26) :
Podemos obtener todos estos resultados:
a | Texto descifrado |
---|---|
1 | fgzzgiqf |
2 | ghaahjrg |
3 | hibbiksh |
4 | ijccjlti |
5 | jkddkmuj |
6 | kleelnvk |
7 | lmffmowl |
8 | mnggnpxm |
9 | nohhoqyn |
10 | opiiprzo |
11 | pqjjqsap |
12 | qrkkrtbq |
13 | rsllsucr |
14 | stmmtvds |
15 | tunnuwet |
16 | uvoovxfu |
17 | vwppwygv |
18 | wxqqxzhw |
19 | xyrryaix |
20 | yzsszbjy |
21 | zattackz |
22 | Abuubdla |
23 | bcvvcemb |
24 | cdwwdfnc |
25 | dexxegod |
El único texto que tiene sentido es zattackz por lo que podemos deducir que la clave es 21 (25 - b = 21).
DEXXEGOD se descifra con la función f(x) = 1x - 4 o f(x) = 1x + 21 y se convierte en ZATTACKZ .
Idioma | cifrar | Descifrar |
---|---|---|
do | cesar.c | Muy pronto |
DO# | César.cs | Muy pronto |
C++ | principal.cpp | principal.cpp |
javascript | cifrar.js | descifrar.js |
Pitón | cifrar.py | descifrar.py |
Rápido | lib.swift | lib.swift |
npm i @cryptoolsorg/caesarcipher