Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Verschlüsselten Text kopieren ! (https://www.delphipraxis.net/113221-verschluesselten-text-kopieren.html)

Delphiturbo 4. Mai 2008 20:32


Verschlüsselten Text kopieren !
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi

ich wollte ein Const für das Passwort in mein Programm speichern
aber da es mit Hex-Programmen schnell findbar ist, möchte ich das Const verschlüsselt in Programm speichern
Ich habe wie in Bild das Const extern mit einem Programm verschlüsselt und wollte ich nun kopieren

wenn ich die Zeile in Edit kopiere und in Code einfüge, dann bekomme ich 2 Zeilen (gebruchene Zeile) !!!

Wie kann ich den Verschlüsselten Text sicher kopieren ?

christian_r 4. Mai 2008 20:36

Re: Verschlüsselten Text kopieren !
 
Wenn jemand mit einem Hex-Editor an Dein Programm ran geht, dann ist es auch nicht mehr weit die Abfrage

if Input = Password then ...

per Editor in

if Input <> Password then ...

umzuwandeln.

Also mein Vorschlag: anderes Konzept.

christian_r 4. Mai 2008 20:40

Re: Verschlüsselten Text kopieren !
 
Ansonsten ist das Problem Deiner Verschlüsselung, dass Du sicherlich Zeichen mit Kodierung < 32 erhältst. Das sind Steuerzeichen, die meisten davon können auf dem Bildschirm nicht dargestellt werden.

christian_r 4. Mai 2008 21:01

Re: Verschlüsselten Text kopieren !
 
Was Du als workaround machen kannst, wenn Du trotz allem das verschlüsselte im Const haben willst:

Delphi-Quellcode:
function GetOrdString
         ( pValue : String )
         : String;
var
  I : Integer;
begin
  Result := '';
  for I := 1 to Length( pValue ) do
  begin
    if Length( Result ) > 0 then
      Result := Result + '+';
    Result := Result + '#' + Ord( pValue[ I ] );
  end;
end;

constPassword := GetOrdString( 'abc' ); // gibt die Zeichenkette '#97+#98+#99' zurück;
Und schon ist es trotz Steuerzeichen verwendbar.

Edit: Code korrigiert.

Luckie 5. Mai 2008 08:16

Re: Verschlüsselten Text kopieren !
 
Dann würde ich es doch eher Base64 oder so kodieren.

christian_r 5. Mai 2008 08:36

Re: Verschlüsselten Text kopieren !
 
Dann müsste es zur Verwendung aber erst wieder dekodiert werden? So kann er es gleich weiterverarbeiten.

Delphi-Quellcode:
procedure getThirdCharOrd
          ( pValue : String );
const
  cPassword = #0 + #97 + #7;
var
  I : Byte;
begin
  I := Ord( cPassword[ 3 ] );
  ShowMessage( IntToStr( I ) ) ; // gibt 7 aus
end;
Was wäre ein überzeugender Vorteil, es noch mal zu mit größerem Aufwand in Base64 zu kodieren/ dekodieren?

marabu 5. Mai 2008 10:03

Re: Verschlüsselten Text kopieren !
 
Hallo,

eine kleine Verbesserung wäre es, wenn man nur ein surjektives Abbild des Kennworts hinterlegt - CRC32 oder eine Hash-Funktion kämen da in Frage, je nach Anforderung.

Das Kennwort kann so nicht rekonstruiert werden.

Grüße vom marabu

christian_r 5. Mai 2008 18:18

Re: Verschlüsselten Text kopieren !
 
Mal anders herum. Ein Hash ist sicher sehr sinnvoll, aber wie schon erläutert. ein User, der mit einem Hex-Editor an das Programm rangeht, der kann sich auch aneignen, wie er den Programmcode von "if Input = RequestedPassword" in "if Input <> RequestedPassword" ändert. Damit wird alles außer dem Passwort akzeptiert. Da ist der Hash auch nix mehr Wert. Also ist ein anderes Konzept zu empfehlen.

Wenn das Programm nur vor unbefugten Zugriffen geschützt werden soll, dann fällt mir auf die Schnelle leider auch eine abhilfe ein. Soll aber der Inhalt, der aus externen Quellen geladen wird, nicht frei zugänglich sein, dann empfiehlt es sich den Inhalt zu verschlüsseln. Dann kann man mit der If-Umkehr-Methode nichts machen, da das Passwrot zwar angenommen wird, aber unbrauchbar ist, um die Daten der Quellen zu entschlüsseln. In dem Fall ist auch der Hash wieder sehr angebracht. Dann weiß zumindest niemand, welches Passwort brauchbar ist.

Edit: Es soll heißen "... dann mir fällt auf die Schnelle leider auch keine Abhilfe ein. ..."


Alle Zeitangaben in WEZ +1. Es ist jetzt 18: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