Delphi-PRAXiS

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)

terminator123 27. Apr 2009 16:33


Bilder Verschlüsseln
 
Hallo zusammen,
ich bin seit längerem auf der Suche nach einem Verfahren, wie ich Bilder mit Delphi verschlüsseln kann.
Kennt jemand so ein Verfahren und könnte mir jemand helfen? :gruebel:

mkinzler 27. Apr 2009 16:37

Re: Bilder Verschlüsseln
 
DEC, tpLockBox, ...

Corpsman 27. Apr 2009 17:07

Re: Bilder Verschlüsseln
 
du Suchst dir ein Verfahren mit dem du byte weise verschlüsseln kannst, und kannst es dann auch von Hand machen.

terminator123 27. Apr 2009 17:11

Re: Bilder Verschlüsseln
 
Danke für die Antworten!
@ mkinzler: Darf ich fragen wobei es sich um "DEC, tpLockBox," handelt??
@ Corpsman: Byteweise verschlüssen? wie geht denn das?

Gruß

mkinzler 27. Apr 2009 17:16

Re: Bilder Verschlüsseln
 
Verschlüsselungsbibloitheken bzw. -komponenten
http://www.michael-puff.de/Developer...agen_Reddmann/
http://sourceforge.net/projects/tplockbox/

shmia 27. Apr 2009 17:33

Re: Bilder Verschlüsseln
 
Eine wichtige Frage ist doch:
Soll das Bild nach dem Verschlüsseln immer noch ein Bild sein (auf dem man natürlich nichts ausser farbigem Rauschen erkennen kann) oder soll das Bild zu einer binären Datei werden, der man es nicht ansieht, dass es ein Bild ist?

terminator123 27. Apr 2009 18:53

Re: Bilder Verschlüsseln
 
Also eigentlich reicht es schon, wenn man nichts ausser farbigem Rauschen erkennen kann. Jedoch weiß ich nicht, wie das realisierbar ist. :gruebel:

Corpsman 28. Apr 2009 06:29

Re: Bilder Verschlüsseln
 
also eine komplette lösung will ich dir eigentlich nicht hinschreiben, aber hier mal etwas was dir die Richtung zeigen könnte

Nehmen wir an du hast ein dreistelliges Passwort "ABC" dann zerlegst du es in seine Chars und verschlüsselst via Xor

eine Wirklich schlechte (Weil langsame) und nicht für variable PW's geeignete Lösung sei etwa :
Delphi-Quellcode:
var i,j:Integer
    bi:TBitmap;
    r,g,b:Byte;
begin
.. Init
  for i := 0 to bi.width -1 do
    for j := 0 to bi.height -1 do begin
       r := getRvalue(bi.canvas.pixels[i,j]);
       g := getgvalue(bi.canvas.pixels[i,j]);
       b := getbvalue(bi.canvas.pixels[i,j]);
       r := r Xor 65; // 65 ist der Ascii Code von "A"
       g := g Xor 66; // 66 ist der Ascii Code von "B"
       b := b Xor 67; // 67 ist der Ascii Code von "C"
       bi.canvas.pixels[i,j] := rgb(r,g,b);
    end;
.. Freigeben
end;
ich hoffe das hilft dir auf die sprünge, letzendes must da aber noch einiges Optimieren das es nachher brauchbar geht..

himitsu 28. Apr 2009 08:29

Re: Bilder Verschlüsseln
 
Die Frage wäre noch WARUM willst du die Bilder verschlüsseln?

Liegen diese deinem Programm bei und du willst nur nicht, daß jemand diese diekt aufruft/anguckt bzw. kopiert.
Wenn sie dann allerdings in deinem Programm angezeigt würden, dann reicht ein Screenshot und schon hätt ich meine Kopie auch.

terminator123 28. Apr 2009 11:02

Re: Bilder Verschlüsseln
 
@himitsu: MIch interessiert nur, wie man Bilder, zum Beispiel mit pixelvertauschen verschlüsseln könnte.
@Corpsman: und wie önnte man wieder entschlüsseln :gruebel:

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.

Cyf 28. Apr 2009 16:57

Re: Bilder Verschlüsseln
 
Da es wohl hauptsächlich um den Lerneffekt geht, wird dir fremden Code abschreiben nicht viel nützen, du solltest zuerst die Grundlagen von Kryptographie lesen.

Das Beispiel hier ist das xor-Verfahren.

Einige Links auf die Grundlagen auf Wiki, weiterführende Inhalte sollten sich danach eigentlich leicht finden lassen:

http://de.wikipedia.org/wiki/Verschiebechiffre
http://de.wikipedia.org/wiki/Monoalp...l%C3%BCsselung
http://de.wikipedia.org/wiki/Polyalp...l%C3%BCsselung
http://de.wikipedia.org/wiki/Kryptographie

p80286 28. Apr 2009 17:12

Re: Bilder Verschlüsseln
 
Zitat:

Zitat von mkinzler
Verschlüsselungsbibloitheken bzw. -komponenten
http://www.michael-puff.de/Developer...agen_Reddmann/

da findest Du einiges zur Dateiverschlüsselung.
hilfreich wäre es auch nach Hier im Forum suchenRC4 zu suchen.

Da gibt's eine fix und fertig Lösung.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr.

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