Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bilder Verschlüsseln (https://www.delphipraxis.net/133189-bilder-verschluesseln.html)

Neutral General 28. Apr 2009 11:05

Re: Bilder Verschlüsseln
 
Hi,

Sollen die Bilder nur falsch aussehen, oder soll die ganze Datei verschlüsselt werden (nicht mehr darstellbar) ?

Im 2. Fall wäre es etwas einfacher (finde ich).

Mit corpsmans Methode ver- und entschlüsselst du. Beim ersten mal wird verschlüsselt, beim 2. mal wird entschlüsselt.

Neutral General 28. Apr 2009 11:14

Re: Bilder Verschlüsseln
 
Also falls du die Methode von corpsman verwenden willst, ist hier eine schnellere:

Delphi-Quellcode:
procedure XorBitmapData(ABitmap: TBitmap; Key: Byte);
var p: PRGBQuad;
    i,j: Integer;
begin
  ABitmap.Pixelformat := pf32Bit;
  for i := 0 to ABitmap.Height-1 do
  begin
    p := ABitmap.Scanline[i]; //(Kann auch Scanline(i) sein... weiß grad nicht)
    for j := 0 to ABitmap.Width-1 do
    begin
      PCardinal(p)^ := PCardinal(p)^ xor Key;
      inc(p);
    end;
  end;
  ABitmap.Pixelformat := pf24Bit;
end;
Ich hoffe das der Code so läuft. Hab grad kein Delphi hier. Kann sein, dass du die eigenen Farb-Bytes einzeln verschlüsseln musst.

himitsu 28. Apr 2009 11:23

Re: Bilder Verschlüsseln
 
Zitat:

Zitat von Neutral General
Ich hoffe das der Code so läuft.

wenn schon, dann verschlüssel besser alle Bytes und nicht nur das erste je Pixel :zwinker:
Code:
procedure XorBitmapData(ABitmap: TBitmap; Key: [b]Cardinal[/b]);

bzw.:
Delphi-Quellcode:
procedure XorBitmapData(ABitmap: TBitmap; Key: Byte);
var p: PByte;
    i,j: Integer;
begin
  ABitmap.Pixelformat := pf24Bit;
  for i := 0 to ABitmap.Height - 1 do
  begin
    p := ABitmap.Scanline[i];
    for j := 0 to (ABitmap.Width * 3) - 1 do
    begin
      p^ := p^ xor Key;
      inc(p);
    end;
  end;
end;
oder gleich
Delphi-Quellcode:
procedure XorBitmapData(ABitmap: TBitmap; Key: Byte);
var p: PByte;
    i: Integer;
begin
  ABitmap.Pixelformat := pf24Bit;
  p := ABitmap.Scanline[ABitmap.Height - 1]; // oder ABitmap.Scanline[0];
  // *grübel* das Bild wird doch von unten nach oben gespeichert ???
  for i := 0 to ABitmap.Height * ABitmap.Width * 3 - 1 do
    p^ := p^ xor Key;
    Inc(p);
  end;
end;

terminator123 28. Apr 2009 11:24

Re: Bilder Verschlüsseln
 
@Neutral General: natürlich würde mich auch interessieren wie man dateien verschlüsselt, wenn das einfacher geht. Allerdings habe ich keinerlei Erfahrungen im Dateien VERschlüsseln :mrgreen: .

p80286 28. Apr 2009 13:58

Re: Bilder Verschlüsseln
 
Zitat:

Zitat von Neutral General
Hi,

Sollen die Bilder nur falsch aussehen, oder soll die ganze Datei verschlüsselt werden (nicht mehr darstellbar) ?

Im 2. Fall wäre es etwas einfacher (finde ich).


Zitat:

Zitat von terminator123
natürlich würde mich auch interessieren wie man dateien verschlüsselt, wenn das einfacher geht...

Ja was denn nun?
Wenn du "nur" das Bild verschlüsseln willst, muß du den zugehörigen Overhead sichern, die reinen Bilddaten identifizieren und verschlüsseln, und dann alles wieder zu einer gültigen Bilddatei zusammen bauen.

dann hast Du als Ergebnis eine "Bilddatei" wo auf dem Bild selbst nichts zu erkennen ist.

wenn Du die vollständige Datei verschlüsselst, dann ist das Ergebnis eine Datei, die nicht mehr als Bilddatei zu erkennen ist.
("Irgend so ein binärer Schrott")

Also noch einmal die Frage:
was willst Du?
wofür soll's gut sein?

Gruß
K-H

terminator123 28. Apr 2009 14:53

Re: Bilder Verschlüsseln
 
Genau genommen interessiert mich beides. Zu der Verschlüsselungsmethode wo die pixel vertauscht werden, wurde ja bereits etwas gesagt. Aber zu der Dateiverschlüsselung leider weniger.



@Corpsman: warum kommt da ungültige EIngabedatei wenn ich impelemtieren will. KOmmt da noch was zu ?

terminatooooor 28. Apr 2009 16:30

Re: Bilder Verschlüsseln
 
Delphi-Quellcode:
procedure XorBitmapData(ABitmap: TBitmap; Key: Cardinal);
var p: PByte;
    i,j: Integer;
begin
  ABitmap.Pixelformat := pf24Bit;
  for i := 0 to ABitmap.Height - 1 do
  begin
    p := ABitmap.Scanline[i];
    for j := 0 to (ABitmap.Width * 3) - 1 do
    begin
      p^ := p^ xor Key;
      inc(p);
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
    XorBitmapData(Image1.Picture.Bitmap, StrToInt(Edit1.Text));
end;

end.

warum funktioniert das nicht???

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

Medium 28. Apr 2009 16:41

Re: Bilder Verschlüsseln
 
Punkt 1: "Es funktioniert nicht" ist KEINE Fehlerbeschreibung!

Punkt 2: Der Code sieht korrekt aus.

WAS zum Henker funktioniert nicht, bzw. was erwartest du? Leute, lernt doch bitte endlich mal Fehler zu beschreiben und richtig Fragen zu stellen wenn ihr schon Hilfe möchtet... Ein Einzeiler reicht praktisch niemals dazu aus.

terminator123 28. Apr 2009 16:44

Re: Bilder Verschlüsseln
 
Um es verständlicher zu machen: Ich wollte ein Bild verschlüsseln. Wenn ich jetzt aber auf den Button drücke passeirt nichts. :wall: Muss ich vielleicht etwas beachten wenn ich den KEy in Edit1 eintrage??

Medium 28. Apr 2009 16:47

Re: Bilder Verschlüsseln
 
Wie schauts aus wenn du ein Image1.Repaint; hinter die Verschlüsslung setzt? Evtl. muss einfach mal nur neu gezeichnet werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz