Szyfrowanie zdjęcia??

0

Witajcie.
Potrzebuje jakiejś metody na szyfrowanie i rozszyfrowywanie zdjęcia.
Potrzebuje zaszyfrować zdjęcie, tak aby tylko mój program potrafił je odtworzyć.
Z tekstem sobie poradziłem, ale na zdjęcie nie mam pomysłu.

Jakies pomysły, rozwiązania??
Będę wdzięczny.

0

a czym się to rózni?

txt = plik; bmp = plik;
txt = array [1..filesize] of char;
bmp = array [1..filesize] of byte;

gdzie pomiedzy char a byte tak naprawdę nie ma kompletnie żadnej różnicy (ci co piszą w C wiedzą o czym mówię).

Tak więc plik, nieważne jaki to tak naprawdę tablica bajtów. Jak chcesz prosto zaszyfrować zdjęcie to uzyj ksorowania np z maską $55;

0

każdy pixel w obrazie ma swoje 3 wartości RGB (Red, Green, Blue)
Każda z tych wartości mieści się w przedziale 0-255 (Bardzo podobnie do ASCII) .. możesz zrobić tak że program pobierze wartość Red i doda do niego liczbę np. 545453
I tak dalej. W każdym programie graficznym wyświetli Ci się biały obrazek. Lecz u Ciebie tą wartość znowu odejmij i wyjdzie Ci obrazek :-P
Wiem, że zagmatwałem :-P

Przedstawię to tak:
Wartości domyślne (np.):
Red: 50
Green: 100
Blue: 150

Dodajesz teraz 55454
i wartości będą miały:
Red: 50 + 55454
Green: 100 + 55454
Blue: 150 + 55454

Potem przy wczytywaniu odejmujesz te wartości z powrotem ;-)

Rozumiesz o co mi chodzi? ;-)
Jeśli nie to spróbuje jaśniej wytłumaczyć ;-)

edit:
Olek mnie znowu wyprzedził :-P

0

No tekst mam w Memo, później funkcja mi tam koduje ten tekst w jakiś tam sposób i zawartość memo zapisuje sobie do pliku i jest niedo odczytania.
Zdjęcie tez bym tak chciał ale własnie tu jest problem.

Jak na razie to metoda PoP_Gniezno jest jedynym wyjściem.

0

Bo memo nie czyta wartości niektórych znaków ascii
zapisz bitmape w memoryStream i wtedy koduj
Pop coś pitoli biały obrazek nie wyjdzie :)

0

Nie wyjdzie biały..ale wyjdzie mozajka! :-D i o to chodzi co nie? :-P
A puchatek007 możesz zapisać jako zwykłą bitmape.. na to samo wyjdzie (chyba)

Image1.Picture.SaveToFile('sciezka');
0
var
 Tab :array of Byte;
 FS  :TFileStream;
 i   :LongWord;

begin
 FS := TFileStream.Create('plik.graficzny', fmOpenReadWrite);
 Setlength(Tab, FS.Size);
 for i := 0 to FS.Size-1 do Tab[i] := Tab[i] xor $55;
 FS.WriteBuffer(Tab, FS.Size);
 FS.Free;
end;

Jakoś tak, naskrobałem na szybko

0
Oleksy_Adam napisał(a)

var
Tab :array of Byte;
FS  :TFileStream;
i   :LongWord;

begin
FS := TFileStream.Create('plik.graficzny', fmOpenReadWrite);
Setlength(Tab, FS.Size);
for i := 0 to FS.Size-1 do Tab[i] := Tab[i] xor $55;
FS.WriteBuffer(Tab, FS.Size);
FS.Free;
end;


OK, a jak wrócić??
Myślałem, żeby odwrócic proces i dałem:
```delphi
Tab[i] := $55 xor Tab[i];

Ale to nie pomogło :(.

0

[green]
Xorowanie jest piękne bo kodowanie i dekodowanie to to samo, czyli odkodować "coś" to trzeba zakodować jeszcze raz.

Tab[i] := Tab[i] xor $55;
0

Xor ma to do siebie, że jest "odwracalny". Przykład:

A xor B = C
A xor C = B
B xor C = A

Teraz kombinuj :)

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