Prośba o pomoc

0

Cześc mam prośbe nie wiem czy ktos już napisał taki programik.
Chce pobawić się troche pisząc programik szyfrujący-wiem mało ambitne znalazłem fajny artykuł w dziale Algorytmy i jest tam programik który ukrywa tekst w Bitmapie, problem tylko tkwi, że przykładzik jest napisany w C++, a ja nigdy nie pisałem w tym programie, cos tam kapuje ale nie wystarczająco aby zacząć go pisac. Wiec jeśli ktoś taki programik napisał czy mógłby mi przesłaś jego źródło do analizy, albo przynajmniej jak by źródło by wyglądało na poziomie Delphi!!!

Dzięki za pomoc !!!

0

Gdygyś cosma jedną chwilkę poświęcił na przeszukanie źródeł delphiowych znalazł byś tam moje tłumaczenie tego (Delphi BMP-Hide & API Delphi BMP-Hide) leń albo problemy z [glowa]

0

widzialem w FAQ cos o szyfrowaniu szlo to mniej wiecej tak
Kodowanie wcale nie musi być tak trudne. Podstawą
programu kodującego musi być algorytm szyfrujący jakieś dane.
Zabezpieczone to musi być hasłem tak, aby szyfrowane słowo + hasło równało
się zakodowany tekst. Pierwsza metoda kodowania...

Metoda xorowania

Cóż, nazwa nie mówi wiele. W Pascalu ( w Turbo
Pascalu jak i w Delphi ) wykorzystana jest do tego procedura XOR. Oops,
sorki nie jest to procedura, ale operator! Operuje on na bitach. Możesz
więc zapisać tak:

Wynik := 20 xor 5;

Tak więc do zmiennej Wynik zapisaliśmy wynik xorowania
liczby 20 przez 5. Co to właściwie znaczy? Otóż systemy operują
systemem dwójkowym - same zera lub jedynki. W naszym przypadku liczba 20
może być liczbą, którą chcemy zaszyfrować, a cyfra 5 może być hasłem.
Tak jak powiedziałem system operuje na systemie zer i jedynek ( binarnym
). Możemy więc zapisać w postaci binarnej tak:

20 = 1110000
5 = 0001111

Xorowanie to zestawianie tych zer i jedynek. Jeżeli dwa
porównywane bity są takie same to rezultat będzie w postaci cyfry 0. [
jeżeli bit 1 = 0 oraz bit 2 = 0 to wynik będzie cyfrą 0 ). W przeciwnym
wypadku ( jeżeli dwa porównywane typy będą różne ) rezultatem będzie
cyfra 1.

Oto przykład zaszyfrowania ( xorowania ) liczby 20:

var
X, Y, Z : Integer;
begin
X := 20; // kodowana liczba
Y := 5; // hasło
Z := X xor Y;

Zmienna Z będzie zawierać liczbę 17. Żeby to teraz
rozszyfrować należy przestawić parametry.

var
X, Y, Z : Integer;
begin
Z := 17; // wynik - Z
Y := 5; // hasło
X := Z xor Y; // Length(Password) then PassCount := 0;
end;
end;


Tak jak mówiłem z tekstem jest trochę trudniej. W tym
wypadku pętla każdy znak tekstu porównuje ze znakiem hasła.

Metoda odejmowania

To o wiele prostsza metoda - polega na odejmowaniu od
liczby 255 numeru znaku. Liczba 255 to największa liczba jaką może
przyjąć jeden bajt. Mówiąc inaczej każdy znak ma swój numer
ASCII.

( numery wszystkich klawiszy możesz poznać ściągając choćby malutki
programik ASCII ).

Możesz np. oprogramować zdarzenie OnKeyPress, które
występuje po naciśnięciu klawisza. Oto procedura:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
ShowMessage(
Format('Zakodowany znak: %s to %d', [Key, 255 - Ord(Key)]));
end;

Istnieje jeszcze jedna metoda ( najbardziej czasochłonna ) polegająca
na oprogramowaniu każdego znaku. Znaczy to, że my opisujemy jakim
znakiem ma program zastąpić określony znak tekstu.

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