Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi 'Sichere' ini-file (https://www.delphipraxis.net/67208-sichere-ini-file.html)

bwolf 11. Apr 2006 09:40


'Sichere' ini-file
 
Hi Leute,

mich würde interessieren, wie ihr das machen würdet:
Ich will in einer Ini-File meine Datenbankverbindung speichern - allerdings sollen die Daten nicht im Klartext da stehen - soll ja nich jeder gleich die Verbindungsdaten wissen.

Wie würdest ihr das machen ?

In einer gewöhnlichen IniFile und die Werte darin verschlüsseln ?

Oder gibts da bereits irgendwas bestimmtes für solche Zwecke.

Danke für eure Hilfe,
gruß ben

mquadrat 11. Apr 2006 09:43

Re: 'Sichere' ini-file
 
Entweder Werte verschlüsseln und dann wieder entschlüsseln, oder die .INI Datei in eine passwortgeschützte ZIP Datei packen und beim Starten entpacken. Mehr Möglichkeiten fallen mir gerade nicht ein.

Evian 11. Apr 2006 09:47

Re: 'Sichere' ini-file
 
Ich habe solch sensieble Daten immer binär verschlüsselt. Die Sache wird dann zwar immernoch nicht 100% Sicher, aber für die meistens Neugierigen bleiben die Daten dann trotzdem verborgen. Hier im Forum findest Du sicher den einen oder anderen guten Algo um Strings zu verschlüsseln.

bwolf 11. Apr 2006 09:56

Re: 'Sichere' ini-file
 
Danke für eure Antworten!

Denke ich werd dann eine gewöhnliche Ini-File nehmen und mir die sensiblen Daten mit Twofish o.ä. codieren.

Falls einer einer eine super Methode hat wie er das macht - bin immer neugierig ;)
Grüße,
ben

Sko 11. Apr 2006 10:57

Re: 'Sichere' ini-file
 
vielleicht wäre ja Base64 was für dich.

glkgereon 11. Apr 2006 11:26

Re: 'Sichere' ini-file
 
Ich hatte mal genau das selbe problem und hab folgendes gemacht:

Delphi-Quellcode:
unit UClasses;

interface

uses IniFiles, UBase64, SysUtils;

type
  {*****
  TCryptedIniFile
    Abgeleitet von TIniFile
    XOR-Verschlüsselung
    Passwort speichern
  *****}
  TCryptedIniFile = class(TIniFile)
  private
    function Crypt(Value, Key: String): String;
  public
    function ReadPassword(Section: String; Ident: String; Default: String): String;
    procedure WritePassword(Section: String; Ident: String; Value: String);
  end;



implementation

function TCryptedIniFile.Crypt(Value, Key: String): String;
var a,b: integer;
begin
  b:=1;
  for a := 1 to Length(Value) do
  begin
    Value[a]:=Chr(Ord(Value[a]) xor Ord(Key[b]));
    inc(b);
    if b > length(Key) then b:=1;
  end;
  Result:=Value;
end;

function TCryptedIniFile.ReadPassword(Section: String; Ident: String; Default: String): String;
var S: String;
begin
  S:=ReadString(Section,Ident,'');
  if S='' then
    Result:=Default
  else
    Result:=Crypt(Crypt(Base64Decode(ReadString(Section,Ident,Default)),Section),Ident);
end;

procedure TCryptedIniFile.WritePassword(Section: String; Ident: String; Value: String);
begin
  WriteString(Section,Ident,Base64Encode(Crypt(Crypt(Value,Section),Ident)));
end;

end.
wobei UBase64 die Base64-Unit hier aus der CodeLib ist...

PS: wie sicher das ganze verschlüsselt ist: Keine Ahnung ^^


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