Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmo es obligatorio.
Adams [Adams] discute el diseo CAST procedimiento con cierto detalle;
Anlisis tambin se puede obtener en lnea (vase, por ejemplo, [Web1] o
[Web2]).
2. Descripcin del Algoritmo
CAST-128 pertenece a la clase de algoritmos de cifrado conocido como
Sistemas de cifrado de Feistel; general de la operacin es por lo tanto similar a la de datos
Encryption Standard (DES). El algoritmo de cifrado completo figura en el
De las cuatro etapas siguientes.
ENTRADA: m1 texto plano ... m64; clave K = k1 ... k128.
SALIDA: texto cifrado c1 ... c64.
1. (Clave calendario) Clculo de 16 pares de subclaves (Kmi, Kri) de K
(Ver las secciones 2,1 y 2,4).
2. (L0, R0) <- (m1. .. m64). (Divisin de la izquierda y en texto plano
Derecho de 32 bits mitades L0 = m1 ... R0 = m32 y m33 ... m64.)
3. (16 balas) para i de 1 a 16, y Li Ri computar de la siguiente manera:
Li = Ri-1;
Ri = Li-1 ^ f (Ri-1, Kmi, Kri), donde f se define en la Seccin 2,2
(F es de tipo 1, tipo 2 o tipo 3, en funcin de i).
4. C1 ... c64 <- (R16, L16). (Intercambio final bloques L16, R16 y
Concatenar para formar el texto cifrado.)
Descifrado es idntico al algoritmo de cifrado anteriores,
La excepcin de que las rondas (y, por tanto, la subclave pares) se utilizan en
Orden inverso a computar (L0, R0) de (R16, L16).
Vase el Apndice B para la prueba de los vectores que pueden ser utilizados para verificar
Correccin de una aplicacin de este algoritmo.
2,1. Pares de claves de la Ronda
CAST-128 utiliza un par de subclaves por ronda: una de 32 bits es la cantidad kilometros
Utilizada como un "enmascaramiento" clave y el 5 bits cantidad Kr se utiliza como
"Rotacin".
aR = encrypt(aR,b)
bL = encrypt(bL,a)
bR = encrypt(bR,a)
}
Verify a == EE A9 D0 A2 49 FD 3B A6 B3 43 6F B8 9D 6D CA 92 (hex)
Verify b == B2 C9 5E B0 0C 31 AD 71 80 AC 05 B8 E8 3D 69 6E (hex)
Adams Informational [Page 15]
Bibliografia :
http://www.faqs.org/rfcs/rfc2144.html
http://www.normes-internet.com/normes.php?rfc=rfc2144&lang=es
_
!" #!$$%
&'( !
&#
) " !
! " ! *+
+
12343__&
&5&346"&##3
1&
"_3*5"3_
*&"7"3_3423"6#
8"_225273793_&"*"3_&(
&5"93_&"*"3_&(
:4_&(
;563<&**&&(
77_*"&
&'13=&$
1&>3&:
"
+ &'( !
0*&'
&+ '7 _ .&7_/!
!
)
!
!0
!
!0
!
0
) 0&) .&/01
"
.1"/0
+ ' !"
+
'
" !
) !
!'
0
!') +
!
?@ &
A
! + + ' .
0 -
0? +@
? +@/
*
&'(+
4
!
A)
!
)
"_75
-;A !BC(
3575
-;
. !
.
8'+ ) 2FC8 FC88;/
8.; /;0
2
2C'A
C2'H.'0B0B/0 &
.!
0!
0!
80
/
;G''.;02;/.-
+ 2;0;
-/
* !
!
) +) 0
-
. + !
/
)
.2F0F/.;02;/
&
7 B !
&'(
+ !
8'+ !B
I
I ! :'+ !B
I I !
_ '"
+!
'
!
"C..BJ*/GGGB/
C..&?"@H&?"+@/'&8?"@/J&?"@
!
"C..BH*/GGGB/
C..&?"@'&?"+@/J&8?"@/H&?"@
!
8"C..B'*/GGGB/
C..&?"@J&?"+@/H&8?"@/'&?"@
00%0F080 ; !
0:0(00 !
80;0$00 : !
8
8&+ 1-
&'(
+ +- '+- &0&0&80 &
'+- A&:0&;0&%0 &( !
'
! !
&
B !&
2 ('+ !+ -F---8--:-;-%-(-$--1--*--40 -F
+! -4
+!
2 ,F,4+ .
!/+!
2 &?@
'+-
IHI =3
+ ! !-F---8--:-;-%-(-$--1--*--4
,F,,,8C-F---8H&:?-*@H&;?-4@H&%?-@H&(?-@H&%?-(@
,,:,;,%C-(-$--1H&:?,F@H&;?,@H&%?,@H&(?,8@H&(?-@
,(,$,,1C--*--4H&:?,%@H&;?,;@H&%?,:@H&(?,@H&:?-$@
,,*,,4C--:-;-%H&:?,@H&;?,$@H&%?,1@H&(?,(@H&;?-1@
BC&:?,(@H&;?,$@H&%?,%@H&(?,;@H&:?,@
BC&:?,@H&;?,1@H&%?,:@H&(?,@H&;?,;@
B8C&:?,@H&;?,*@H&%?,8@H&(?,@H&%?,$@
BC&:?,@H&;?,4@H&%?,@H&(?,F@H&(?,@
-F---8C,(,$,,1H&:?,:@H&;?,%@H&%?,@H&(?,;@H&%?,F@
--:-;-%C,F,,,8H&:?-F@H&;?-@H&%?-@H&(?-8@H&(?,@
-(-$--1C,,:,;,%H&:?-%@H&;?-;@H&%?-:@H&(?-@H&:?,@
--*--4C,,*,,4H&:?-@H&;?-$@H&%?-1@H&(?-(@H&;?,8@
B:C&:?-8@H&;?-@H&%?-@H&(?-*@H&:?-(@
B;C&:?-@H&;?-F@H&%?-@H&(?-4@H&;?-*@
B%C&:?-%@H&;?-;@H&%?-(@H&(?-$@H&%?-8@
B(C&:?-:@H&;?-@H&%?-@H&(?-1@H&(?-%@
,F,,,8C-F---8H&:?-*@H&;?-4@H&%?-@H&(?-@H&%?-(@
,,:,;,%C-(-$--1H&:?,F@H&;?,@H&%?,@H&(?,8@H&(?-@
,(,$,,1C--*--4H&:?,%@H&;?,;@H&%?,:@H&(?,@H&:?-$@
,,*,,4C--:-;-%H&:?,@H&;?,$@H&%?,1@H&(?,(@H&;?-1@
B$C&:?,8@H&;?,@H&%?,@H&(?,*@H&:?,$@
BFC&:?,@H&;?,F@H&%?,@H&(?,4@H&;?,@
BC&:?,%@H&;?,;@H&%?,(@H&(?,$@H&%?,@
BC&:?,:@H&;?,@H&%?,@H&(?,1@H&(?,;@
-F---8C,(,$,,1H&:?,:@H&;?,%@H&%?,@H&(?,;@H&%?,F@
--:-;-%C,F,,,8H&:?-F@H&;?-@H&%?-@H&(?-8@H&(?,@
-(-$--1C,,:,;,%H&:?-%@H&;?-;@H&%?-:@H&(?-@H&:?,@
--*--4C,,*,,4H&:?-@H&;?-$@H&%?-1@H&(?-(@H&;?,8@
B8C&:?-(@H&;?-$@H&%?-%@H&(?-;@H&:?-8@
BC&:?-@H&;?-1@H&%?-:@H&(?-@H&;?-%@
B:C&:?-@H&;?-*@H&%?-8@H&(?-@H&%?-(@
B;C&:?-@H&;?-4@H&%?-@H&(?-F@H&(?-*@
?
) +) 0!
-F-4
!B%'B8@
,F,,,8C-F---8H&:?-*@H&;?-4@H&%?-@H&(?-@H&%?-(@
,,:,;,%C-(-$--1H&:?,F@H&;?,@H&%?,@H&(?,8@H&(?-@
,(,$,,1C--*--4H&:?,%@H&;?,;@H&%?,:@H&(?,@H&:?-$@
,,*,,4C--:-;-%H&:?,@H&;?,$@H&%?,1@H&(?,(@H&;?-1@
B%C&:?,(@H&;?,$@H&%?,%@H&(?,;@H&:?,@
B(C&:?,@H&;?,1@H&%?,:@H&(?,@H&;?,;@
B$C&:?,@H&;?,*@H&%?,8@H&(?,@H&%?,$@
BFC&:?,@H&;?,4@H&%?,@H&(?,F@H&(?,@
-F---8C,(,$,,1H&:?,:@H&;?,%@H&%?,@H&(?,;@H&%?,F@
--:-;-%C,F,,,8H&:?-F@H&;?-@H&%?-@H&(?-8@H&(?,@
-(-$--1C,,:,;,%H&:?-%@H&;?-;@H&%?-:@H&(?-@H&:?,@
--*--4C,,*,,4H&:?-@H&;?-$@H&%?-1@H&(?-(@H&;?,8@
BC&:?-8@H&;?-@H&%?-@H&(?-*@H&:?-(@
BC&:?-@H&;?-F@H&%?-@H&(?-4@H&;?-*@
B8C&:?-%@H&;?-;@H&%?-(@H&(?-$@H&%?-8@
BC&:?-:@H&;?-@H&%?-@H&(?-1@H&(?-%@
,F,,,8C-F---8H&:?-*@H&;?-4@H&%?-@H&(?-@H&%?-(@
,,:,;,%C-(-$--1H&:?,F@H&;?,@H&%?,@H&(?,8@H&(?-@
,(,$,,1C--*--4H&:?,%@H&;?,;@H&%?,:@H&(?,@H&:?-$@
,,*,,4C--:-;-%H&:?,@H&;?,$@H&%?,1@H&(?,(@H&;?-1@
B:C&:?,8@H&;?,@H&%?,@H&(?,*@H&:?,$@
B;C&:?,@H&;?,F@H&%?,@H&(?,4@H&;?,@
B%C&:?,%@H&;?,;@H&%?,(@H&(?,$@H&%?,@
B(C&:?,:@H&;?,@H&%?,@H&(?,1@H&(?,;@
-F---8C,(,$,,1H&:?,:@H&;?,%@H&%?,@H&(?,;@H&%?,F@
--:-;-%C,F,,,8H&:?-F@H&;?-@H&%?-@H&(?-8@H&(?,@
-(-$--1C,,:,;,%H&:?-%@H&;?-;@H&%?-:@H&(?-@H&:?,@
--*--4C,,*,,4H&:?-@H&;?-$@H&%?-1@H&(?-(@H&;?,8@
B$C&:?-(@H&;?-$@H&%?-%@H&(?-;@H&:?-8@
B8FC&:?-@H&;?-1@H&%?-:@H&(?-@H&;?-%@
B8C&:?-@H&;?-*@H&%?-8@H&(?-@H&%?-(@
B8C&:?-@H&;?-4@H&%?-@H&(?-F@H&(?-*@
#
&+ ! &+ !
2 B00B;+ 8'+
+ !.
/
2 B00B;+ 8'+ + !.
/A !
:+
.CAGC;AJJ/DBCBABCB;JAE
:>+
B !,
&'( !
+
!
+
(+4)+
/4 !,
(F+. 0F0(0:;0;0
%0 (F+/0
- !
+
;A
/4 !,
(F+0
;
A
8/4 !,
0
/
(+/
_
&'(
!+
3"*) +
31N"*_"4"C
D./ + 1!./.(F/ .8:88/ .%/
.;;/E
:131N"*_"4"CD
:1.F/E
7 C&O5_D
)3&"_*452F0''" , )
!2
"_''B !
0 +
E
_ )
0
',
!
!
1
&'(
! +
:#31N"*_"4"CD
:#./E
7 C&O5_D
2
"_0''#
0 +
!2
"_''B !
0 +
E
&'(! +
+ #*: :131N"*_"4"C
D
+ #*: &:'1./E
7 C&O5_D
3&"_0
"_0'' +
!2
"_''B !
0 +
E
_ "> )
'+ !
!
1
#*: &'(! +
&
7B&P:
4
) !
!, .(+/ ) !
!
L !
88#1! L :F#6,7
8"
&'(
+ ) +
! !'
& !
+ ! +
! !
:
?@00I
&!
&
*
7 I0*
0 0 !
!.
/
? +@I
&!
&*
7 I. ?@+) +
*
7 I0
LL L +!
? +@I& !
LL
(FFFLL
;<
%:F6 0
30 0B>%
' Q
7 J;8%;8$FF(
-&'1-
&'1-&
8F+F$FF+;+ 8:(% 8$FF8;FF8 :F$$$
+%((++++: F8F$F$(F$;%:; ;8F F:8; %;;(
(;(8+;F%F:$8%$(%%::F 88F8(;:;((%+
$ F;8;($;+%;(%:F+ 8 :;;+:;( 88F
;;+F(%(8$FF+$ $%$8$%(:%;+%+:8%%
+(+ %::$;%F :F$%(%+;(F$F : +FF:+( :$8:
+;%:F++;;;$F+
:(+%88$F $8+:$+(
+8:
(8(8F:;$;8:(%;+:;$$%$(F8(F%(:%:;(8:
8: %$ 8%$FF$F(;% $ 88;;F: $::%8+F(F:(
:(8FFFFF88+;+:%;( %:;8%+:F8%8%:$:F+:
;+:+++F+;+$%$(%+;:+(::8+::+$ 8
+8 8 $ FF(+: ::+8:+$ $( 88+:;
$:8$ + :((%F;$:$F%(;+;:8 :%$+8
:F%::(($$%F;:
8(:+FF(8%:F8::% ;:;8:F::+;8:;((;;8:$
8;8%8
+$::F :8F
:8 8:%+:(8:$;8$8
:;F;
$+:($:$:(%
(:++$::: :%F
($(+::
$$$:F((+((%F :%$F%$;+$(::
+%$+;%:$%(F(:::F:%F8 (8 8F:$%:$:;;$
8 $$F8 ;F%FF%; +;$;:%$%$(:+(%;++F%%(%;
($( (%$ (;; $(F (%(88F :($;+++;($8++(
8F8+$((%%$$+$:;F F(8%((%$$;%:;8
(+$F%
$8F+%$88+;$(;8$8+%;%::(:%
$%+;$
8:8%(8
&'1-&
$+8FF+; $ %+ %+ %8$(%++;(:%(::F8FF
% (% ;F+;;8F$:8:%$ +FF:$8;$%+%+8;;8
(%:+($8FFFF8F8F+8FF:8%FF$%+:
F:;%%$F$: F:;:F8 F(+F(F:%F
(F:8FFF (8 : $(% %%F+(
(:%((F8;+F;;8+% (FF:%
+ ;;F;8;:
+FF(8+(8+;(F(($8 (;:( ;
$FF$$F:$%:FF%+$:( : %
% ++F$$F
+$$8FF%(++8F+(
&'1-&;
;($; 8(;% 88%%$:+F( %F;(8+ :+8:::8
+$F$;F (8F:%$;8 (;+$+;;+( : + 8$8(%8($($+8(
88$;F$8%+:F;; ;: % 8F( $$ 8 88%$+%(8;%
8$;$ $+:% F(;;F(+F$((;(((;$FF$(
F;;:$$ $$(;8(8F;F %( 8F:$8F %F%F(F%
$% $8F:;+F (;+ 8%+ 88%:8%(+:F;+F 8
F(8$$%$+
$%$8F($%;;+ +
;;FFF%:;:+ ;%(($8+8;;(8;F(;F+((8:;
F%%($+ +8+ $ F:F(F+F8: ;;+: +( 8(;$8%:;
%+8:8;%+$; F8%$((888;; ($8+%F(:F+8;((
%+($%:+8%;;+%; F:+8%F%+; %$$;(;
F$;(( :F; 8%$ ;%%F(+8$%$:(8%:$:(+ 8%:;
F; +8FF%+:(($$: 8%+( :8(+; $; ;+ (:(
+;;(:F(+%($8:(8+(+$;F ;; 8$;
$:(+FF$+8+;( $$;%(F;:+%$+(:; ; 8$+ (8(;((
F F(F $::+ :; % :8;8++8:% ++(:; F88;%;888F8(
;F%%$:;8 :F(F$((8:;;$
(+$8( 8
+(%;((:8;$:;;
%8;8+F;8%$8+(($8 +8
8; + ;(
%(
%8F:F+(F
;(F(+(8 (+:$
-1 >
-
) ) &'(
+
1&
"
) + ) .)
)
!0
('+ !CF8:;%8:;%(8:;%($8:;%($
-CF8:;%($1*4
-C8(14:(%1
(F'+ !CF8:;%8:;%(8:
CF8:;%8:;%(8:FFFFFFFFFFFF
-CF8:;%($1*4
-C1;%F%1
F'+ !CF8:;%
CF8:;%FFFFFFFFFFFFFFFFFFFFFF
-CF8:;%($1*4
-C%(;*;$18F
14
#
&'(+
) !
) 0+2 +
) +0 !
.0/ !
1
+ !
" CF8:;%8:;%(8:;%($8:;%($. -/
" +CF8:;%8:;%(8:;%($8:;%($. -/
0FFF0FFF
D
2C !
.20+/
C !
.0+/
+2C !
.+20/
+C !
.+0/
E
> !CC$*F$4*81;188;41($*;*$. -/
> !+CC1$:1FF8*%(FF:1((8*;$;. -/