for n:=1 to Length(Memo1.Text) do
begin
Application.ProcessMessages;
m:=((Length(Memo1.Text)) mod (n)) mod (Length(Edit1.Text)); {ustalenie którego znaku klucza użyć na podstawie reszty z dzielenia}
if m=0 then m:=1; //Edit1.Text nie ma znaku 0,
ile:=ord(Edit1.Text[m]); //więc gdy taki się trafi wychodzi 1
znak:=Memo1.Text[n]; //pobieramy każdy znak z tekstu
ascii:=ord(znak); // bierzemy kod ASCII
ascii:= (ascii) xor (ile); //XORujemy
znak := chr(ascii); //zmieniamy - mamy nowy znak
Memo2.Text:=Memo2.Text + znak; //zapisujemy do Memo2
if StopNow Then Exit; //możliwość zatrzymania
end;
To jest prymitywny szyfr mojego autorstwa. I pytanie: jak to możliwe, że gdy szyfruje tekst o długości około 12000 znaków to program "gubi" 10-15 symboli? Jeśli długość tekstu wejściowego była 12000 to wyjściowego wychodzi np. 11990. Wnioskuję, że jest jakiś błąd bo komputer się raczej nie myli. Nawet, jeśli nie miałoby to wpływu na znaczenie tekstu to odszyfrowanie tą metodą jest nie możliwe. Potrzebna jest niezmienna długość tekstu. Proszę o pomoc.