Hej, potrzebuję napisać algorytm szyfrujący DES. Niestety przerasta mnie trochę sposób jego opisu choćby ten z wikipedi.
Gdyby ktoś pomógł mi zrozumieć co muszę zrobić, by coś takiego napisać. Będę sobie pisał w C#, gdyż w tym języku czuję się chyba najlepiej. Studiuje i to jeden z projektów...
To tak najpierw algorytm szyfrowania danych, na początku tekst jawny, który ma zostać zaszyfrowany, dzielony jest na bloki 64-bitowe. Czyli jeżeli dobrze rozumiem "Ala ma kota" powinno zostać zapisana jako wartości int 64 bitowe. Czyli biorę tablice mająca 64 pozycje i wrzucam do niej a (97), w jedna komórkę, l w kolejną (108), teraz znowu a (97), spacje ignoruje, m wpisuje jako 109 itd.
Teraz mamy dokonać permutacji, ale na jakiej zasadzie.
z tego co widzę jest jakaś ustalona kolejność? Czyli najpierw 58 <- czyli to co na indexie 58-mym ma trafić na pierwsze miejsce w tablicy permutacji?
Teraz ma zostać podzielone na dwa bloki, 32-bitowe (czyli co od 0 do 31 to bd cześć pierwsza, a od 32 do 63 cześć druga?).
Teraz funkcje Feistela:
bity klucza są przesuwane, a następnie wybieranych jest 48 z 56 bitów klucza - nie do końca rozumiem tę procedurę. Jeżeli mój klucz tekstowy to "test" to co ja mam z nim właściwie zrobić?
prawa część danych rozszerzana jest do 48-bitów za pomocą permutacji rozszerzonej - a to? Permutacja rozszerzona pokazuje wartości 32 1 2 3 itd
czyli co pierwszy element tablicy to ma być 32-gi starej?
rozszerzona prawa połowa jest sumowana modulo 2 z wybranymi wcześniej (i przesuniętymi) 48 bitami klucza - no tu chyba nawet koncepcji nie mam.
Eh no dalej nie ma co pisać bo się totalnie gubię nie rozumiem.
Tu moja prośba mógłby ktoś podrzucić jakiś przykład, na nim wytłumaczyć, albo wytłumaczył to jakoś jak laikowi, albo podrzucie tematy, które muszę poczytać by to ogarnąć proszę. Mam wrażenie, że to jest dość proste tylko jakoś nie potrafię tego zrozumieć, zbyt ograniczony jestem, za duże braki mam.