home
Algoritmo DES simplificado en C -->
Algoritmo DES simplificado de Edward Schaefer de la Universidad de Santa Clara.(explicación)
m=L0R0:(12 )
K: (9 )
K1: (8 ) K2: (8 ) K3: (8 )
K4: (8 ) K5: (8 ) K6: (8 )
K7: (8 ) K8: (8 ) K9: (8 )
S1 000001010011100101110111
0101010001110011100111000
1001100110010000111101011
S2 000001010011100101110111
0100000110101111001011010
1101011000111110010001100
 
Li-1 :(6 )
E(Ri-1): (8 )
E(Ri-1) xor ki: (8 )
B1:(4 )
B2: (4 )
C1: (3 )
C2: (3 )
f ( Ri-1, Ki): (6 )
Li = Ri-1:(6)(6 )
Ri= Li-1 xor f ( Ri-1, Ki) : (6 )
mi= Li Ri: (12 )
Feistel k1
Ri-1:(6)
Feistel k2
Ri-1:(6)
Feistel k3
Ri-1:(6)
 
Li-1 :(6 )
E(Ri-1): (8 )
E(Ri-1) xor ki: (8 )
B1:(4 )
B2: (4 )
C1: (3 )
C2: (3 )
f ( Ri-1, Ki): (6 )
Li = Ri-1:(6)(6 )
Ri= Li-1 xor f ( Ri-1, Ki) : (6 )
mi= Li Ri: (12 )
Feistel k4
Ri-1:(6)
Feistel k5
Ri-1:(6)
Feistel k6
Ri-1:(6)
 
Li-1 :(6 )
E(Ri-1): (8 )
E(Ri-1) xor ki: (8 )
B1:(4 )
B2: (4 )
C1: (3 )
C2: (3 )
f ( Ri-1, Ki): (6 )
Li = Ri-1:(6)(6 )
Ri= Li-1 xor f ( Ri-1, Ki) : (6 )
mi= Li Ri: (12 )
Feistel k7
Ri-1:(6)
Feistel k8
Ri-1:(6)
Feistel k9
Ri-1:(6)

El mensaje plano m=L0R0 tiene 12 bits, que dividimos en dos mitades de 6 bits cada una.
La clave k tiene 9 bits.

El bloque derecho de 6 bits se expande a 8 bits mediante la siguiente función:
Ri-1123456
E(Ri-1)12434356

El proceso de obtención de las subclaves de 8 bits a partir de la clave de 9 bits, es por rotación circular:

K123456789
K112345678 
K223456789 
K334567891 
K445678912 
K556789123 
K667891234 
K778912345 
K889123456 
K991234567 

Utiliza un algoritmo de cifrado de Feistel.

Ri-1 --> E(Ri-1) xor ki --> B

B1 -->S1--> C1
B2 -->S1--> C2

f ( Ri-1, Ki) = C1 + C2

Li = Ri-1
Ri= Li-1 xor f ( Ri-1, Ki)

mi= Li Ri

El proceso de descifrado sigue el mismo algoritmo pero recorrido en sentido inverso:
Se intercambian los bloques izquierdo y derecho al principio y al final
se usan las claves en orden inverso.


Nota: