Algorytm szyfowania nie dziala.

0

Algorytm szyfrowania

Witam. Chciałbym zastosować ten algorytm szyfrowania, ale coś mi on nie działa. A dokładnie nie wiem co wpisać w miejscu:

 For i to FSize-1 do 

wpisywałem tam różne wartości i := 0, i := fsize itd lecz niestety nie działa. Jak wpisze fsize to niby działa ale jak chce odczytać czyli zamieniam wartość:

X:=X+Ord(Kod[j]);

na wartość

X:=X-Ord(Kod[j]);

To wartości pozostają takie same. Tak więc co tam wpisać ?

0

Nie zagłębiałem się w kod podany w tym artykule, ale jeżeli chcesz go wykorzystać "żywcem" to powinien się on skompilować. Przecież zmianna FZise jest tam ustawiana. Jeśli chciał byś odczytywać i zapisywać do string'a, a nie do TMemoryStream to trzeba było by go przerobić. Wtedy jak podejrzewam to ta zastosowana pętla for musiał by być od 1 do Length(StringWejsciowy), co jest chyba oczywiste.

EDIT: algorytm działa, tylko że za taki "artykuł" do którego podałeś link jego autor powinien dostać przynajmniej karnego ku... Ponieważ jest błąd w nazwie zmiennej, powinno być PlikIn, a nie Plik. Natomiast pętla tak - jak wiadomo - powinna być od zera do FSize - 1. Tylko autor coś tam "zjadł" w składni. Natomiast odszyfrowanie jest tak jak napisał. Zamiast dodawać kod znaku to go odejmujesz. Coś to trochę przypomina szyfrowanie cezara z "przemodzeniem". Nie wiem czy akurat takie hasło i string wybrałem, ale wcale nie szyfruje pierwszego znaku, także trochę to do niczego. Bo jak już szyfrujemy, to lepiej mieć wszystko zaszyfrowane jak należy.

0

no właśnie jest on żywcem skopiowany i niestety nie chce się skompilować. I błąd wyskakuje właśnie przy pętli for

0

To ją popraw i się skompiluje. Patrz dopisek po EDIT: z mojej pierwszej odpowiedzi.

0

no ale jak jest pętla i := 0 to wtedy wyskakuje błąd: EDivbyzero with message "division by zero"

0

To widocznie kod jest niedoskonały, bo mi dla pliku z pięciolierowym słowem i trzyznakowym hasłem (wprawdzie dałem trzy litery takie same, ale to powinno być bez znaczenia) zaszyfrowało i odszfrowało bez żadnych błędów. Kodu nie analizowałem, ale skoro autor wkleja i nie sprawdza czy mu czegoś parser nie wyciął, a artykuł jest pisany bałaganiarsko i w ogóle bez pomyslunku to pewnie w kodzie też są jakieś "kwiatki"

0

no ale skoro tobie działa to jak kod nie doskonały ? Mógłbyś przesłać mi twój program jak Ci działa ? Raczej to ja coś robię źle

0

Należy wprowadzić jedynie takie zmiany jak podałem. Pomijam to, że procedura Szyfruj może być oczywiście poza klasą. I nie podsyłam gotowców, bo nic się nie nauczysz. I nie twierdzę, że na 100% kod z artukułu działa źle, ale skoro masz jakieś błedy o dzieleniu przez zero, a zastosowałeś się do moich porad, to może stworzyłeś taki plik wejściowy, który powoduje błedy. I wystarczy poprawić nazwę zmiennej Plik tak jak napisałem oraz pętlę for by dało się to skompilować. Opis pętli for dla Delphi opisano na: For .

1 użytkowników online, w tym zalogowanych: 0, gości: 1