Espero que les guste; cualquier comentario será bien recibido.
Primero les dejo las tablas de valores y el algoritmo, luego les dejo un par de ejemplos para que vean como funciona.
Código:
TABLA DE VALORES
A B C D E F 10 11 12 13 14 15
G H I J K L 16 17 18 19 20 21
M N O P Q R 22 23 24 25 26 27
S T U V W X 28 29 30 31 32 33
Y Z 0 1 2 3 34 35 36 37 38 39
4 5 6 7 8 9 40 41 42 43 44 45
Código:
BLOQUES DE DATOS
0 1 2 3 R P K C
4 5 6 7 B Q D N
8 9 A B X Z F T
Nota:
Si la suma de los dígitos del valor numérico del caracter a cifrar
es equivalente a 10, entonces vale 0,
si da 11, es equivalente a A,
si da 12, es equivalente a B.
Código:
ALGORITMO DE CIFRADO
i = 0
data = (v[n1] + v[n2])
? = :v < 50 = (:i < 1 = 3, :i > 0 = -3, v = b),
:v < 40 = (i+4, v = b),
:v < 30 = (:i < 1 = 1, :i > 0 = -1, v = b),
:v < 20 = (i+2, v = b)
Explicación de la suma de valores:
El valor del dato a cifrar es el resultado de la suma entre el primer y último dígito del valor numérico del caracter a cifrar.
Explicación de la variable i:
Si el valor numérico del caracter a crifrar
es menor a 50 (entre 40 y 49), i equivale a 3 si esta es 0, sino resta 3,
si es menor a 40 (entre 30 y 39), se suma 4 a i,
si es menor a 30 (entre 20 y 29), i equivale a 1 si esta es 0, sino resta 1,
si es menor a 20 (entre 10 y 19), se suma 2 a i.
Glosario:
i = variable para eludir repetición de valores
data = texto a cifrar
v = valor numérico del caracter a cifrar
n1 = primer dígito numérico del caracter a cifrar
n2 = segundo dígito numérico del caracter a cifrar
b = bloque de datos
Código:
EJEMPLOS
i = 0, 1, 0, 1
SPK = 28, 25, 20
? = (2 + 8), (2 + 5), (2 + 0)
? = 1(0), 0(7), 1(2)
? = 1R0N1K
i = 0, 2, 1, 0, 2, 1, 5, 4, 6, 5
HOLA MUNDO = 17, 24, 21, 10, 22, 30, 23, 13, 24
? = (1 + 7), (2+4), (2 + 1), (1 + 0), (2 + 2), (3 + 0), (2 + 3), (1 + 3), (2 + 4)
? = 2(8), 1(6), 0(3), 2(1), 1(4), 5(3), 4(5), 6(4), 5(6)
? = 2X1D0C2P1B5C4Q6B5D