[ veselinmarkovic @ 28.05.2009. 04:07 ] @
Kao projekat za fakultet radim implementaciju DES-a u Javi.

Ima jedan deo algoritma za koji ne znam tačno šta radi (nije problem da to isprogramiram, nego da znam ŠTA treba da isprogramiram).

Sledeća slika prikazuje Fajselovu funkciju DES-a:



Ono što ne znam je šta podrazumeva sabiranje po modulu 2 (XOR-ovanje) u funkciji R' = L XOR f(R,K). f(R,K) kao izlaz daje 8 redova sa po 4 bita. Evo grafika:







L se dobije tako što se uzme prvih 32 bita izlaza funkcije IP, dakle 4 reda po 8 bitova. f(R, K) predstavlja izlaz funkcije P, dakle 8 redova od po 4 bita.

Ono što ja ne znam je kako da ova dva saberem po modulu 2. Pretpostavljam da se bit 1 iz L sabira sa bitom 1 iz f(R,K), bit 2 sa bitom 2 itd. i na kraju bit 32 sa bitom 32, ali nisam siguran. Ako neko zna pouzdan odgovor, molim da mi pomogne.

Hvala!

[Ovu poruku je menjao veselinmarkovic dana 28.05.2009. u 09:26 GMT+1]

[Ovu poruku je menjao veselinmarkovic dana 28.05.2009. u 09:28 GMT+1]

[Ovu poruku je menjao veselinmarkovic dana 28.05.2009. u 09:38 GMT+1]

[Ovu poruku je menjao veselinmarkovic dana 28.05.2009. u 09:39 GMT+1]

[Ovu poruku je menjao veselinmarkovic dana 28.05.2009. u 09:40 GMT+1]
[ Alkibijad @ 28.09.2009. 16:14 ] @
Ne znam koliko ce ti biti relevantan odgovor posle 4 meseci ali evo odgovora na tvoje pitanje i kratak opis Fejstelove funkcije.

Sva sabiranja u DES algoritmu jesu, kao sto si i sam rekao, sabiranje po modulu 2 (XOR-ovanje) i to "bit po bit". Dakle, "32. bit registra A" XOR "32. bit registra B" itd. sto znaci da si sam dao odgovor.

Prva slika koju si postavio ne predstavlja algoritam Fejstelove funkcije vec generalnu 16-koracnu semu enkripcije/dekripcije DES algoritma nad 64-bitnom sekvencom fajla koji se enkriptuje/dekriptuje. Razlika izmedju enkripcije i dekripcije predstavlja redosled primene pomocnih kljuceva K1 do K16. Kod enkripcije taj redosled je kao na slici, dok je kod dekripcije redosled obrnut od K16 do K1. Pocetni registri L0 i R0 predstavljaju levu odnosno desnu polovinu pocetne 64-bitne sekvence, tj. L0=visih 32 bita, R0=nizih 32 bita.

Druga slika predstavlja semu Fejstelove funkcije, ono sto je na prvoj slici predstavljeno simbolom f. Na pocetku je potrebno 32-bitnu sekvencu registra Ri prosiriti na 48 bita po tacno odredjenom obrascu. Nakon toga vrsi se sabiranje po modulu 2 "bit po bit" sa pomocnim kljucem Ki. Na taj nacin se dobija 48 bitna sekvenca koja se sada posmatra kao skup 8 registra svaki sa po 6 bitova (kao na drugoj slici). Sada se na osnovu ovih osam 6-bitnih registara vrsi iscitavanje iz tzv. S tabela (S1 do S8). S tabele predstavljaju unapred definisane matrice 4x16 cija su polja popunjena vrednostima od 0 do 16 (4-bitne vrednosti). Ako se jedan 6-bitni registar predstavi kao x5x4x3x2x1x0 onda kombinacija bitova x5x0 daje vrstu, a kombinacija x4x3x2x1 daje kolonu S tabele. Dakle, na osnovu osam 6-bitnih registara dobija se osam 4-bitnih sekvenci koje se zatim posmatraju kao jedinstvena 32-bitna sekvenca. Nad ovom sekvencom vrsi se permutacija bitova P ,kao na sto je prikazano na trecoj slici. Ova zavrsna 32-bitna sekvenca predstavlja izlaz Fejstelove funkcije. Inace, nacin popunjavanja S tabela 4-bitnim vrednostima zadrzan je u tajnosti do dan danas.

Detaljno objasnjen nacin rada DES algoritma moze se naci ovde.
[ veselinmarkovic @ 29.09.2009. 00:11 ] @
Hvala na odgovoru. Provalio sam i sam, ali hvala u svakom slučaju!

Pozdrav od Veselina