Vous êtes sur la page 1sur 11

Algoritmos para Encriptamiento y Desencritar en Diferentes Lenguajes

(Lenguaje Java, Perl y C#)


Lourdes Snchez-Guerrero
1
, Jos Raymundo Lira-Corts
2
y Mariem Henaine-Aed
1
1
!ni"ersidad Aut#noma Metro$o%itana, &e$artamento de Sistemas
A"' San (a%o )o' 1*+, Co%' Reynosa-,amau%i$as, &e%' Azca$otza%co, C'(' +22++, &' -', M.ico
/%s0,ham12correo'azc'uam'm.
2
!ni"ersidad Aut#noma Metro$o%itana, &e$artamento de 3%ectr#nica
A"' San (a%o )o' 1*+, Co%' Reynosa-,amau%i$as, &e%' Azca$otza%co, C'(' +22++, &' -', M.ico
r%ira2correo'azc'uam'm.
Resumen 3ste art4cu%o tiene %a intenci#n de mostrar %a a$%icaci#n de %os a%0oritmos, $ara encri$tar y
desencri$tar archi"os' 3stos a%0oritmos &3S y 5&3S 6,R7(L3&3S8, se desarro%%aron en %en0ua9e Ja"a,en
$er% y C: ' 3% si0uiente traa9o es $arte de% $royecto de in"esti0aci#n algoritmo de autenticacin,
encriptamiento y non-repudation (no- rechazo) para redes de computadora'
!ntro"ucci#n
A continuaci#n $ara introducir a% tema de %a se0uridad, descriiremos %os conce$tos ms im$ortantes a
continuaci#n'
3s im$ortante mencionar ;ue %a se0uridad de %os datos es un tema de actua%idad en cua%;uiera de %as
acti"idades desarro%%ados con tecno%o04as de %a in<ormaci#n, es $or esta raz#n ;ue este tema se "ue%"e
re%e"ante dentro de rea de conocimiento de %as tecno%o04as de %a in<ormaci#n' Cae mencionar ;ue e.iste
%a necesidad de <ormar $ro<esiona%es en esta rea'
Cri$to0ra<4a es %a ciencia de %a escritura secreta, es un razo de %as matemticas, %a cri$to%o04a, tiene otro
hi9o, ;ue es e% cri$toan%isis y esta es %a ciencia ;ue ana%iza %a cri$to0ra<4a' Las acciones $rinci$a%es de
se0uridad en %as a$%icaciones estn diri0idas $or %a cri$to0ra<4a' (rinci$a%mente, %as a$%icaciones necesitan
ase0urarse ;ue %os usuarios son ;uienes dicen ser' (ro"eer identi<icaci#n es %%amado autenticaci#n
6autenti<icaci#n8' 3n e% mundo, una %icencia de mane9o es un ti$o de autenticaci#n' Cuando se usa %a
com$utadora, usua%mente se necesita un nomre y un $ass=ord 6c%a"e8 $ara autenti<icarse' La cri$to%o04a
$ro"ee mtodos ms se0uros, %%amados <irmas y certi<icados'
A$%icaciones de com$utadoras necesitan $rote0er sus datos de accesos no autorizados' )o se ;uiere
$ersonas oser"ando tus datos 6tu ;uieres con<iai%idad8, y adems no ;uieres ;ue camien datos sin tu
autorizaci#n 6;uieres ase0urar %a inte0ridad de tus datos8' &atos 0uardados en un disco, $or e9em$%o,
$ueden ser "u%nera%es ser "istos o roados' &atos transmitidos a tra"s de %a red est su9eto a todo ti$o de
ata;ues' La cri$to0ra<4a $ro"ee so%uciones' (or e9em$%o> Se0uridad en correo e%ectr#nico'
Confia$ili"a"
Com?nmente no ;ueremos ;ue otras $ersonas %ean nuestro correo $osta%, es $or esta raz#n usamos sores
cerrados $ara nuestras cartas en "ez de %as tar9etas $osta%es' Casi toda %a in<ormaci#n en e% internet es
transmitida en e% e;ui"a%ente de tar9etas $osta%es% Aun sin ;uerer e% correo e%ectr#nico es <recuentemente
ma% en"iado' Si se tec%ea err#neamente %a direcci#n, tu correo %e $uede %%e0ar a un administrador de
sistemas en a%0?n %u0ar' 3s sor$rendentemente es muy senci%%o ;ue in<ormaci#n ;ue tu $ensaas ;ue era
con<idencia% est dis$oni%e a mi%es de $ersonas en internet'
Aun datos en e% disco duro de tu com$utadora estn dis$oni%es $ara tus com$a@eros de traa9o, #
cua%;uiera otra $ersona ;ue ten0a acceso <4sico a tu com$utadora' (ara $rote0er %os datos de% disco duro,
es $osi%e encri$tar%os antes de escriir%os en e% disco' A desencri$tar e% te.to ci<rado cuando se ;uiera "er
%a in<ormaci#n 6# cuando re;uieras im$rimir%os e% archi"o8' Como e9em$%o de un ci<rador $odemos ha%ar
de% RB,15' 3% RB,15'es un ci<rador muy sim$%e'
3% a%0oritmo de% RB,15 sim$%emente rota cada carcter de un mensa9e 15 $osiciones' RB,15
ori0ina%mente se desarro%%o $ara ocu%tar $osi%es romas 6chistes8 o<ensi"os en %os ne=s 0ru$s en internet'
Si %a in<ormaci#n era "ista $or otra $ersona no %o entender4a' (ara re"isar %a in<ormaci#n es necesario
desencri$tar%a' 3% RB,15 no es se0uro'
Los ci<radores ?ti%es usan %%a"es $ara encri$tar y desencri$tar datos' !na %%a"e es un "a%or secretosC como
un $ass=ord # un )7( 6n?mero de identi<icador $ersona%8'
La %%a"e es una secuencia de ytes' (uede ser 0uardado en %a memoria # en e% disco' S4 se encri$ta e%
mismo te.to en c%aro usando di<erentes %%a"es, se otinen di<erentes te.tos ci<rados' &e %a misma <orma, e%
te.to ci<rado $uede ser so%amente desencri$tado usando %a %%a"e a$ro$iada'
La Cri$to0ra<4a ha sido usada $or %os mi%itares desde %os d4as de %as 0uerras He%nicas y ha crecido
<irmemente en %a so<isticaci#n en $ara%e%o con %as Matemticas y ,ecno%o04as de 7n<ormaci#n'
,odos %os sistemas cri$to0r<icos, sin im$ortar cun com$%e9os son tienen %as si0uientes cuatro $artes
sicas'
1' (%ainte. 6te.to en c%aro8'- 3ste es e% mensa9e antes de ;ue se ha0a cua%;uier cosa, 3ste es e%e0i%e $ara
%os humanos o en un <ormato ;ue cua%;uier so<t=are adecuado $ueda usar'
2' ,e.to Ci<rado'- 3ste es e% mensa9e en $%ainte.t des$us de ;ue ha sido modi<icado $ara hacer%o i%e0i%e'
3% $roceso de con"ertir te.to en c%aro a te.to ci<rado se dice encri$tar y %a o$eraci#n in"ersa es
desencri$tar'
5' A%0oritmo de encri$ci#n'- 3sta es %a o$eraci#n usada $ara con"ertir te.to en c%aro a te.to ci<rado y
"ice"ersa'
D' L%a"e'- 3sta es una %%a"e secreta usada $ara encri$tar o desencri$tar e% mensa9e' Cada %%a"e trans<orma
e% mismo te.to en c%aro en di<erente te.to ci<rado' Si e% sistema cri$to0r<ico <unciona ien, so%amente %as
$ersonas ;ue conocen %a %%a"e correcta $ueden desci<rar e% te.to ci<rado
Cifradores Simtricos: un ci<rador simtrico usa %a misma %%a"e a% encri$tar y desencri$tar' Los ci<radores
simtricos tamin son %%amados ci<radores de %%a"e $ri"ada o %%a"e secreta'
Cifradores Asimtricos: %os ci<radores asimtricos 6tamin %%amados ci<radores de %%a"es $?%icas8
in"o%ucran una %%a"e $?%ica, ;ue $uede ser %iremente distriuida, y una %%a"e $ri"ada, ;ue $uede ser
secreta' 3stas %%a"es siem$re son 0eneradas en $are9as' L%a"es $?%icas rea%mente son $?%icas, se $uede
$u%icar%as en un $eri#dico, $ero nadie $uede "io%ar t? $ri"acidad sin %a %%a"e $ri"ada' 3% mecanismo de
distriuir %as %%a"es $?%icas, sin emar0o, es un 0ran reto'
Los datos encri$tados usando %a %%a"e $?%ica $ueden ser desencri$tados usando %a %%a"e $ri"ada' )in0una
otra %%a"e $uede desencri$tar %os datos, y %a %%a"e $ri"ada so%o $uede desencri$tar %os datos ;ue <ueron
encri$tados con su $are9a 6%a %%a"e $?%ica8' 3n a%0unos a%0oritmos e% $roceso in"erso tamin <unciona,
%os datos encri$tados con %a %%a"e $ri"ada $ueden ser encri$tados con %a %%a"e $?%ica' Los ci<radores
asimtricos son mucho ms %entos ;ue %os ci<radores simtricos, y $or eso no son usua%mente usados $ara
encri$tar mensa9es muy %ar0os'
!ntegri"a"
La inte0ridad de datos nos $ermite estar se0uros de ;ue %os datos no han sido camiados 6$or e9em$%o, ;ue
nadie ha camiado e% contenido de un e-mai% o camiado un $ro0rama ;ue deseamos a9ar de %a red y ;ue
no %o camien $or un $ro0rama con a%0?n ti$o de "irus8
!n message digest $uede ser usado $ara "eri<icar %a inte0ridad de datos' !n message digest es un n?mero
ca%cu%ado $or un con9unto de datos de entrada 6$or e9em$%o, un archi"o8'
!n C&D!'( DE A)*E+*!CAC!&+ DE ,E+-AJE 6MAC o Messa0e Authentication Code8, $or
e9em$%o, es sicamente un M con una %%a"e asociada' (roduce un "a%or corto asado en tanto en su
entrada como en su %%a"e' 3n teor4a, so%o con %a misma %%a"e se $uede $roducir e% mismo MAC $ara %a
misma entrada de datos'
!na <orma de autenticaci#n "iene de %a cominaci#n de M y un ci<rador asimtrico' Si se encri$ta e% M
con su %%a"e $ri"ada, otra $ersona tiene ;ue usar %a %%a"e $?%ica de %a $rimera $ara desencri$tar e% M, y
as4 no so%o saer ;ue %os datos son 4nte0ros, sino adems, saer ;uin es e% ;ue est en"iando %os datos' 3%
M encri$tado es %%amado una firma, de hecho %a $rimera $ersona a firma"o e% archi"o'
Autenticaci#n
3n un momento dado, es <undamenta% estar se0uro de ;ue %as $ersonas con %as ;ue tratas son rea%mente
;uienes e%%as dicen ser' 3ste $roceso de identi<icaci#n se %%ama autenticacin!
3n una %%amada te%e<#nica, te identi<icas diciendo tu nomre' 3% sonido de tu "oz te autenti<ica con %a
$ersona con %a ;ue ests ha%ando' Cuando se usa un ca9ero automtico, tu tar9eta ma0ntica y tu )7(
6n?mero de identi<icaci#n $ersona%8 te autentican con e% anco, a%0una otra $ersona $odr4a usar tu tar9eta
ma0ntica $ero sin tu )7( $resumi%emente no $odr4a otener %os ser"icios ancarios'
La mayor4a de %os sistemas de c#m$uto usan un identi<icador de usuario y un pass"ord $ara %a
identi<icaci#n y autenticaci#n' ,e identi<icas con e% identi<icador de usuario y te autenticas con tu
pass"ord!
!n ci<rador asimtrico $uede ser usado $ara %a autenticaci#n' !na $ersona $uede autenticar a otra
$idindo%e ;ue encri$te cua%;uier cosa con su %%a"e $ri"ada, $ues so%o su %%a"e $?%ica $odr
desencri$tar%o correctamente'
Los ci<radores asimtricos son muy costosos com$utaciona%mente 6muy %entos8' &esa<ortunadamente, no
es $rctico usar %os ci<radores asimtricos $ara con"ersaciones enteras' ,4$icamente, %os ci<radores
asimtricos se usan $ara autenticar a %os $artici$antes de una con"ersaci#n, %a con"ersaci#n se encri$ta
usando a%0?n ci<rador simtrico, usando una %%a"e secreta ;ue se 0enera so%o $ara esa con"ersaci#n,
%%amada, lla#e de sesin! A;u4 e% reto es intercamiar %a lla#e de sesin sin ;ue nadie %a descura'
3% -ecure -oc.et Layer (--L) hace e.actamente eso 6e% SSL es am$%iamente usado en ERBFS3RS de
FFF8'
Certificados: un certi<icado es una dec%araci#n, un certi<icado, es una %%a"e $?%ica <irmada' 3% certi<icado
se crea con a%0unos datos de% autor de% certi<icado y otros datos de% escritor de %a %%a"e $?%ica y %a %%a"e
$?%ica en un archi"o, des$us %a $rimera $ersona <irma e% archi"o 6encri$tando%o con su %%a"e $?%ica8'
Cadenas de Certificados: $ara "eri<icar un certi<icado, se necesita una %%a"e $?%ica' (ara "eri<icar una
%%a"e $?%ica, es necesario un certi<icado' !n certi<icado $uede "eri<icar a otro, ;ue es "eri<icado $or otro,
y as4' 3sto es %%amado una cadena de certi<icados' La cadena no $uede ser in<inita, as4 ;ue %a cadena
em$ieza con un certi<icado cuya $ersona ;ue certi<ica y e% ;ue %o 0enero es e% mismo' !sua%mente este
certi<icado es 0enerado $or una Autoridad de Certificacin (CA), una instituci#n como GeriSi0n'
!sar certi<icados $ara %a autenticaci#n de$ende de %a cadena de certi<icados ;ue a% <ina% termina con un
certi<icado ;ue est <irmado $or %a misma $ersona ;ue 0nero e% certi<icado' Los certi<icados <irmados $or
%a misma $ersona no son se0uros, cua%;uier $ersona $uede 0enerar su $ro$io certi<icado diciendo ;ue % es
GeriSi0n o a%0?n otro' HC#mo se $odr4a con<iar en un certi<icado <irmado $or e% mismoI
!na <orma <ci% de hacer esto es 0enerar un M de% certi<icado, usua%mente %%amado hue%%a dacti%ares de%
certi<icado 6certi<icate fingerprint)' (ara "eri<icar%o, %%amas a% autor de% certi<icado y "eri<icas e% M de%
certi<icado' (or %o 0enera% %a CA $u%ica en di<erentes %u0ares sus M de sus $ro$ios certi<icados $ara ;ue
se $uedan "eri<icar sus certi<icados'
*ipos "e Algoritmos
ALGBR7,MB
M& 6 Mensa0e &i0est8 "eri<ica %a inte0ridad de datos
MAC 6Messa0e
Authentication Code8
c#di0o de autenticaci#n de mensa9e
-7RMA una <orma de autenticaci#n "iene de %a cominaci#n de M& y un
ci<rador
Ci<radores Simtricos usa %a misma %%a"e $ara encri$tar y desencri$tar
Ci<radores Asimtricos in"o%ucran una %%a"e $?%ica y una $ri"ada
7ntercamio de %%a"es m?%ti$%es $artes en comunicaci#n se $onen de acuerdo sore ;ue
%%a"es usar $ara %%e"ar a cao %a comunicaci#n encri$tada
Algoritmos
+(,/RE *!P( RE0ERE+C!A
M&J M& R-C 1521 <t$>KKds'internic'netKr<cKr<c1521't.t
SHA-1 M& )7S, -7(S 1*+-1
htt$>KK==='nist'0o"Kit%Kdi"*LMK$usK<i$1*+-1'htm
HmacM&J MAC R-C 21+D <t$>KKds'internic'netKr<cKr<c2+1D't.t
HmacSHA1 MAC R-C 21+D <t$>KKds'internic'netKr<cKr<c2+1D't.t
&SA -irma )7S, -7(S 1*N
htt$>KK==='nist'0o"Kit%Kdi"*LMK$usK<i$1*N'htm
3%Gama% -irma O Gase A$$%ied Cry$to0ra$hy, Eruce Scheneier
Addison-Fi%ey
&3S Ci<rador Simtrico )7S, -7(S DN-2
htt$>KK==='nist'0o"Kit%Kdi"*LMK$usK<i$DN-2'htm
&3Sede Ci<rador Simtrico A)S7 PL'1M o 7SB *M52
htt$>KK==='ansi'or0K
(E3FithM&Jand
&3S
Ci<rador Simtrico (QCS:J
htt$>KK==='rsa'comKrsa%asK$usK(QCSKhtm%K$Rcs-
J'htm%
3%Gama% Ci<rador Asimtrico O Gase A$$%ied Cry$to0ra$hy, Eruce Scheneier
Addison-Fi%ey
&H 7ntercamio de L%a"es (QCS:5
htt$>KK==='rsa'comKrsa%asK$usK(QCSK$sK$Rcs-5'$s
KO
Ejemplo "e uso "e JCE 1%2%1
Java Cryptograp3y E4tension 1%2%1
3ste $ro0rama encry$taKdesencry$ta con &3S y 5&3S 6 ,R7(L3&3S 8
Se $uedesn usar %%a"es de * o 2D ytes 6 $ara &3S o 5&3S 8
OK
im$ort 9a"a'io'OC
im$ort 9a"a'security'OC
im$ort 9a"a'security's$ec'OC
im$ort 9a"a.'cry$to'OC
im$ort 9a"a.'cry$to's$ec'OC
im$ort 9a"a.'cry$to'SecretQey-actory'OC
$u%ic c%ass td /
$u%ic static "oid main6Strin0ST ar0s8 /
int i,%ar0oC
Strin0 )omreA%0oC
KO esta es %a ase $ara %a %%a"e OK
yte ST a U /
6yte8 1, 6yte82, 6yte85, 6yte8D,
6yte8J, 6yte8N, 6yte8M, 6yte8*,
6yte8 1, 6yte82, 6yte85, 6yte8D,
6yte8J, 6yte8N, 6yte8M, 6yte8*,
6yte8 1, 6yte82, 6yte85, 6yte8D,
6yte8J, 6yte8N, 6yte8M, 6yte8*,
1C
SecretQey Rey U nu%%C
oo%ean dirC KO si encri$ta o desencri$ta OK
oo%ean a%0oC KO si des o 5des OK
i<6 ar0s'%en0th VU D 8/
System'out'$rint%n6
W!so> encri$ta /eXdX3X&1 %%a"e archi"o1 archi"o2W8C
KO
e > encri$ta con &3S
d > desencri$ta con &3S
3 > encri$ta con 5&3S
& > desencri$ta con 5&3S
OK
System'e.it618C
1
i<6 ar0sS+T'e;ua%s6WeW8 YY ar0sS+T'e;ua%s6WdW8 YY ar0sS+T'e;ua%s6W3W8 YY ar0sS+T'e;ua%s6W&W88/
System'out'$rint%n6
W!so> encri$ta /eXdX3X&1 %%a"e archi"o1 archi"o2W8C
System'e.it618C
1
KO dinamicamente con<i0uramos a SunJC3 OK
Security'add(ro"ider6 ne= com'sun'cry$to'$ro"ider'SunJC368 8C
KO dir es true si encri$ta OK
dir U ar0sS+T'e;ua%s6WeW8 XX ar0sS+T'e;ua%s6W3W8 C
KO a%0o es e% a%0oritmo, si es true U &3S es <%ase U 5&3S OK
a%0o U ar0sS+T'e;ua%s6WeW8 XX ar0sS+T'e;ua%s6WdW8 C
i<6 a%0o 8 )omreA%0o U W&3SWC
e%se )omreA%0o U W&3SedeWC
i<6 a%0o 8 %ar0o U *C
e%se %ar0o U 2DC
i<6 ar0sS1T'%en0th68 Z %ar0o 8
%ar0o U ar0sS1T'%en0th68C
<or6iU+CiZ%ar0oCi[[8
aSiT U 6yte8 ar0sS1T'charAt6i8C
try /
i<6 a%0o 8/ KK &3S
&3SQeyS$ec dRs U ne= &3SQeyS$ec6 a 8C
SecretQey-actory R< U
SecretQey-actory'0et7nstance6)omreA%0o8C
Rey U R<'0enerateSecret6dRs8C
1
e%se / KK &3Sede
&3SedeQeyS$ec dRs U ne= &3SedeQeyS$ec6 a 8C
SecretQey-actory R< U
SecretQey-actory'0et7nstance6)omreA%0o8C
Rey U R<'0enerateSecret6dRs8C
1
1
catch6 7n"a%idQeyS$ec3.ce$tion ie. 8/
System'out'$rint%n6W )o encontre a W [ )omreA%0o8C
System'e.it618C
1
catch6 7n"a%idQey3.ce$tion iR 8/
System'out'$rint%n6WLLAG3 7)GAL7&A, adiosW8C
System'e.it618C
1
catch6 )oSuchA%0orithm3.ce$tion e. 8/
System'out'$rint%n6W )o encontre a W [ )omreA%0o8C
System'e.it618C
1
Ci$her ci U nu%%C
try /
i<6 a%0o 8 KK &3S
ci U Ci$her'0et7nstance6W&3SK3CEK(QCSJ(addin0W8C
e%se KK 5&3S
ci U Ci$her'0et7nstance6W&3SedeK3CEK(QCSJ(addin0W8C
i<6 dir 8 ci'init6Ci$her'3)CRA(,\MB&3,Rey8C
e%se ci'init6Ci$her'&3CRA(,\MB&3,Rey8C
1
catch6 7n"a%idQey3.ce$tion iR 8/
System'out'$rint%n6WLLAG3 7)GAL7&A, adios u$sW8C
System'e.it618C
1
catch6 )oSuchA%0orithm3.ce$tion e. 8/
System'out'$rint%n6W )o encontre a W [ )omreA%0o [ WK3CEK(QCSJ(addin0W8C
System'e.it618C
1
catch6 )oSuch(addin03.ce$tion e. 8/
System'out'$rint%n6W )o encontre a W [ )omreA%0o [ WK3CEK(QCSJ(addin0W8C
System'e.it618C
1
i<6 dir 8 encri$ta6ci,ar0sS2T,ar0sS5T8C
e%se
desencri$ta6ci,ar0sS2T,ar0sS5T8C
1
$u%ic static "oid encri$ta6Ci$her ci, Strin0 entrada, Strin0 sa%ida8/
try /
Eu<<ered7n$utStream % U ne= Eu<<ered7n$utStream 6
ne= -i%e7n$utStream6entrada88C
Ci$herBut$utStream esc U ne= Ci$herBut$utStream6
ne= Eu<<eredBut$utStream 6
ne= -i%eBut$utStream6sa%ida88, ci8C
int cC
=hi%e6 6 c U %'read68 8 VU -1 8
esc'=rite6c8C
%'c%ose68C
esc'c%ose68C
1
catch6 7B3.ce$tion e.iii8/
System'out'$rint%n6W3rror de %ectura o escrituraW8C
System'e.it618C
1
1
$u%ic static "oid desencri$ta6Ci$her ci, Strin0 entrada, Strin0 sa%ida8/
try /
Ci$her7n$utStream %e U ne= Ci$her7n$utStream6
ne= Eu<<ered7n$utStream 6
ne= -i%e7n$utStream6entrada88,ci8C
Eu<<eredBut$utStream esc U ne= Eu<<eredBut$utStream 6
ne= -i%eBut$utStream6sa%ida88C
int cC
=hi%e6 6 c U %e'read68 8 VU -1 8
esc'=rite6c8C
%e'c%ose68C
esc'c%ose68C
1
catch6 7B3.ce$tion e.iii8/
System'out'$rint%n6W3rror de %ectura o escrituraW8C
System'e.it618C
1
1
1
:VKusrK%oca%KinK$er% -=
:
: 3ncri$ta y desencri$ta con &3S y 5&3S 6&3S\3&358
: en $er%
:
use Cry$t>>CECC
use strictC
my6]ci$her,]a%0o,]Rey,]arch\entrada,]arch\sa%ida8C
my6]uso,]dir,]nomrea%0o,]u<<er,]%8C
]uso U W!so> encri$ta /eXdX3X&1 %%a"e archi"o1 archi"o2^nWC
]a%0o U shi<t 2ARGGC
]Rey U shi<t 2ARGGC
]arch\entrada U shi<t 2ARGGC
]arch\sa%ida U shi<t 2ARGGC
i<6 inde.6Wed3&W,]a%0o8 UU -1 XX %en0th6]a%0o8 VU 1 8/
$rint ]usoC
e.it 1C
1
: dir es true si encry$ta
]dir U 6 ]a%0o e; _e_ XX ]a%0o e; _3_ 8C
: a%0o es e% a%0oritmo, true si es &3S o <a%se si es 5&3S 6 &3S\3&358
]a%0o U 6 ]a%0o e; _e_ XX ]a%0o e; _d_ 8C
: e% nomre de% a%0oritmo
]nomrea%0o U ]a%0o I W&3SW > W&3S\3&35WC
]ci$her U ne= Cry$t>>CEC6]Rey,]nomrea%0o8C
o$en63),RA&A,]arch\entrada8 or die W3rror a% arir a ]arch\entradaC]VWC
o$en6SAL7&A,W`]arch\sa%idaW8 or die W3rror a% arir a ]arch\sa%idaC]VWC
$rint 6 ]dir I _encry$tin0_ > _decry$tin0_ 8C
]ci$her-`start6 ]dir I _encry$tin0_ > _decry$tin0_ 8C
=hi%e6 sysread63),RA&A,]u<<er,1+2D8 8/
]% U ]ci$her-`cry$t6]u<<er8C
sys=rite6SAL7&A,]%, %en0th6]%88C
1
]% U ]ci$her-`<inish68C
sys=rite6SAL7&A,]%, %en0th6]%88C
c%ose 3),RA&AC
c%ose SAL7&AC
KOGersi#n de% a%0oritmo &3S y 5&3S6tri$%e&3S8 en %en0ua9e :C OK
usin0 System'G%oa%izationC
usin0 System'Runtime'7ntero$Ser"icesC
names$ace System'Security'Cry$to0ra$hy
/
:i< )3,\2\+
SComGisi%e 6true8T
:endi<
$u%ic astract c%ass &3S > SymmetricA%0orithm
/
$ri"ate const int ReySizeEyte U *C
:i< )3,\2\+
$rotected &3S 68
:e%se
$u%ic &3S 68
:endi<
/
QeySizeGa%ue U NDC
E%ocRSizeGa%ue U NDC
-eedacRSizeGa%ue U *C
Le0a%QeySizesGa%ue U ne= QeySizesS1TC
Le0a%QeySizesGa%ueS+T U ne= QeySizes6ND, ND, +8C
Le0a%E%ocRSizesGa%ue U ne= QeySizesS1TC
Le0a%E%ocRSizesGa%ueS+T U ne= QeySizes6ND, ND, +8C
1
$u%ic static ne= &3S Create 68
/
return Create 6WSystem'Security'Cry$to0ra$hy'&3SW8C
1
$u%ic static ne= &3S Create 6strin0 a%0o8
/
return 6&3S8 Cry$toCon<i0'Create-rom)ame 6a%0o8C
1
interna% static so%o%ectura yteS,T =eaRQeys U /
/ +.+1, +.+1, +.+1, +.+1, +.+1, +.+1, +.+1, +.+1 1,
/ +.1-, +.1-, +.1-, +.1-, +.+-, +.+-, +.+-, +.+- 1,
/ +.31, +.31, +.31, +.31, +.-1, +.-1, +.-1, +.-1 1,
/ +.--, +.--, +.--, +.--, +.--, +.--, +.--, +.-- 1,
1C
interna% static so%o%ectura yteS,T semiFeaRQeys U /
/ +.++, +.13, +.++, +.13, +.++, +.+3, +.++, +.+3 1,
/ +.++, +.3+, +.++, +.3+, +.++, +.-+, +.++, +.-+ 1,
/ +.++, +.-3, +.++, +.-3, +.++, +.-3, +.++, +.-3 1,
/ +.13, +.++, +.13, +.++, +.+3, +.++, +.+3, +.++ 1,
/ +.13, +.3+, +.13, +.3+, +.+3, +.-+, +.+3, +.-+ 1,
/ +.13, +.-3, +.13, +.-3, +.+3, +.-3, +.+3, +.-3 1,
/ +.3+, +.++, +.3+, +.++, +.-+, +.++, +.-+, +.++ 1,
/ +.3+, +.13, +.3+, +.13, +.-+, +.+3, +.-+, +.+3 1,
/ +.3+, +.-3, +.3+, +.-3, +.-+, +.-3, +.-+, +.-3 1,
/ +.-3, +.++, +.-3, +.++, +.-3, +.++, +.-3, +.++ 1,
/ +.-3, +.13, +.-3, +.13, +.-3, +.+3, +.-3, +.+3 1,
/ +.-3, +.3+, +.-3, +.3+, +.-3, +.-+, +.-3, +.-+ 1,
1C
$u%ic static oo% 7sFeaRQey 6yteST r0Qey8
/
:i< )3,\2\+
i< 6r0Qey UU nu%%8
thro= ne= Cry$to0ra$hic3.ce$tion 6Loca%e'Get,e.t 6W)o hay %%a"eW88C
:endi<
i< 6r0Qey'Len0th VU ReySizeEyte8
thro= ne= Cry$to0ra$hic3.ce$tion 6Loca%e'Get,e.t 6WLon0itud de %%a"e incorrectaW88C
<or 6int iU+C i Z r0Qey'Len0thC i[[8 /
s=itch 6r0Qey SiT X +.118 /
case +.11>
case +.1->
case +.-1>
case +.-->
reaRC
de<au%t>
return <a%seC
1
1
<or 6int iU+C i Z 6=eaRQeys'Len0th `` 58C i[[8 /
int 9 U +C
<or 6C 9 Z r0Qey'Len0thC 9[[8 /
i< 66r0Qey S9T a =eaRQeys Si,9T8 ` 18
reaRC
1
i< 69UU*8
return trueC
1
return <a%seC
1
$u%ic static oo% 7sSemiFeaRQey 6yteST r0Qey8
/
:i< )3,\2\+
i< 6r0Qey UU nu%%8
thro= ne= Cry$to0ra$hic3.ce$tion 6Loca%e'Get,e.t 6W)o hay %%a"eW88C
:endi<
i< 6r0Qey'Len0th VU ReySizeEyte8
thro= ne= Cry$to0ra$hic3.ce$tion 6Loca%e'Get,e.t 6WLon0itud de %%a"e incorrectaW88C
<or 6int iU+C i Z r0Qey'Len0thC i[[8 /
s=itch 6r0Qey SiT X +.118 /
case +.11>
case +.1->
case +.-1>
case +.-->
reaRC
de<au%t>
return <a%seC
1
1
<or 6int iU+C i Z 6semiFeaRQeys'Len0th `` 58C i[[8 /
int 9 U +C
<or 6C 9 Z r0Qey'Len0thC 9[[8 /
i< 66r0Qey S9T a semiFeaRQeys Si,9T8 ` 18
reaRC
1
i< 69UU*8
return trueC
1
return <a%seC
1
$u%ic o"erride yteST Qey /
0et /
i< 6QeyGa%ue UU nu%%8 /
GenerateQey 68C
1
return 6yteST8 QeyGa%ue'C%one 68C
1
set /
i< 6"a%ue UU nu%%8
thro= ne= Ar0ument)u%%3.ce$tion 6WL%a"eW8C
i< 6"a%ue'Len0th VU ReySizeEyte8
thro= ne= Ar0ument3.ce$tion 6Loca%e'Get,e.t 6WLon0itud de %%a"e incorrectaW88C
i< 67sFeaRQey 6"a%ue88
thro= ne= Cry$to0ra$hic3.ce$tion 6Loca%e'Get,e.t 6WL%a"e d"i%W88C
i< 67sSemiFeaRQey 6"a%ue88
thro= ne= Cry$to0ra$hic3.ce$tion 6Loca%e'Get,e.t 6WL%a"e semi d"i%W88C
QeyGa%ue U 6yteST8 "a%ue'C%one 68C
1
1
1
1
/i$liograf5a
b A$$%ied Cryto0ra$hy, Erunce Schneider, John Fi%ey Y Sons,7nc', 6!SA,1LLD8, 7SE)+-DM-
JLMN-2
b Anu<<, 3d, JAGA SourceooR, BcRei%%y Y Associates' 7nc, 6!SA, 1LLJ8, 7SE) +-DM1-1D*JL-*
b &anesh, Arman, ,each Aourse%< JAGAScri$t , Samsnet, 6!SA, 1LLN8, 7SE) 1-JMJ21-+M5*
b Coo$er,-rederic J' Chris Go00ans, 7m$%ementin0 7nternet Security, )e= Riders (u%ishin0,
6!SA,1LLJ 8, 7SE) 1 JN2+J-DM1-N
b &enin0, &orothy, Cry$to0ra$hy and &ata Security, 6!SA 1L*28, Addison Fes%ey, 7SE) +-2+11X
+1J+-J

Vous aimerez peut-être aussi