AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verschlüssel, in einer .ini-Datei speichern später auflösen
Thema durchsuchen
Ansicht
Themen-Optionen

Verschlüssel, in einer .ini-Datei speichern später auflösen

Ein Thema von Lamy · begonnen am 25. Mai 2004 · letzter Beitrag vom 26. Mai 2004
Antwort Antwort
Seite 2 von 3     12 3      
Lamy

Registriert seit: 11. Apr 2004
119 Beiträge
 
Delphi 7 Personal
 
#11

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 13:57
Waaahh!

Ich wollte doch nur verhindern, dass jemand die .ini - Datei öffnet und der dann sofort das Passwort ablesen kann - nicht sowas kompliziertes was ich eh nicht versteh
Kann man dafür nicht einfach den Algorithmus nehmen, um das ganze einfach in die .ini-Datei zu schreiben?
Soll ja nix profesionelles werden sondern einfach mal ein Projekt um mich mit Delphi vertraut zu machen...
Vielen Dank bisher!

Lamy
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#12

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 14:07
Zitat von Lamy:
Ich wollte doch nur verhindern, dass jemand die .ini - Datei öffnet und der dann sofort das Passwort ablesen kann
Versuchs mal damit, da sind einige Verschlüsselungsalgorithmen schon umgesetzt und ganz easy anwendbar: TurboPower LockBox

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#13

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 14:27
Na dann werde ich hier auch mal meinen Senf dazugeben.

1.) die Verschlüsselung muss von der Speicherung getrennt werden, damit jeder Teil
für sich getest werden kann. Die beiden Dinge dürfen nicht vermischt werden.

2.) ich zeige hier mal eine ganz einfache Verschlüsselung, die mit XOR arbeitet
und somit ver- als auch entschlüsseln kann:
Delphi-Quellcode:
function SimpleCryptString(const S, Key: string): string;
var
  i, j: Integer;
  C: Byte;
  P: PByte;
begin
  SetLength(Result, Length(S));
  P := PByte(Result);

  j := 1;
  for i := 1 to Length(S) do
  begin
    C := Ord(S[i]);

    C := C xor Ord(Key[j]);
    P^ := C;
    Inc(P);
    Inc(j);
    if j > Length(Key) then
      j := 1;
  end;
end;
3. Bei der Verschlüsselung entstehen Zeichen, die nicht in einer Inidatei gespeichert
werden können. Deshalb muss man das verschlüsselte Passwort codieren.
Die einfachste Methode ist die hexadezimale Codierung: jedes Zeichen wird zu 2 Hexziffern codiert.
Dazu folgende Funktionen:
Delphi-Quellcode:
function StringToHexStr(const value:string):string;
begin
   SetLength(Result, Length(value)*2); // es wird doppelter Platz benötigt
   if Length(value) > 0 then
      BinToHex(PChar(value), PChar(Result), Length(value));
end;

function HexStrToString(const value:string):string;
begin
   SetLength(Result, Length(value) div 2); // es wird halber Platz benötigt
   if Length(value) > 0 then
      HexToBin(PChar(value), PChar(Result), Length(value));
end;
Alternativ kann man auch noch die Base64-Codierung (auch als Mimekodierung bekannt) verwenden.

4.) Damit entsteht folgender Pseudocode:
Delphi-Quellcode:
   PWverschl := SimpleCryptString(PWKlartext, Supperkey); // verschlüsseln
   PWverschl := StringToHexStr(PWverschl); // Codieren
   SaveSettings(ftpserver, user, PWverschl, directory);
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#14

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 14:39
Wo ist das Problem ?

Delphi-Quellcode:

uses DECUtil, Cipher;

function Encode(const Value, Password: String): String;
begin
  with TCipher_Rijndael.Create(Password, nil) do
  try
    Result := CodeString(Value, paEncode, fmtMIME64);
  finally
    Free;
  end;
end;

function Decode(const Value, Password: String): String;
begin
  with TCipher_Rijndael.Create(Password, nil) do
  try
    Result := CodeString(Value, paDecode, fmtMIME64);
  finally
    Free;
  end;
end;
Wie einfacher soll es denn noch gehen ??

Gruß Hagen

PS: auf alle Fälle ist dies sicherer als alle anderen genannten Beispiele.
PPS: LockBox ist schön und gut, aber nicht unbedingt einfacher und eben sicherer. Hier im Forum hatte ich dies schon mal ausführlich erklärt warum dies so sein muß.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#15

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 15:06
Falls du auf's DEC verzichten willst so kann man eben auch mit nur ein wenig mehr Source dein Problem wesentlich sicherer lösen. Nachfolgend ein Source der den bekannten RC4 Algorithmus als Stand Alone implementiert. Man erkennt das für eine sichere Verschlüsselung nicht viel mehr Code benötigt wird als für eine unsicherer XOR Verschlüsselung.

Delphi-Quellcode:
type
  TRC4Context = record
    D: array[Byte] of Byte;
    I,J: Byte;
  end;

procedure RC4Init(var RC4: TRC4Context; const Key: String);
var
  R,S,T,U: Byte;
  L: Integer;
begin
  L := Length(Key);
  with RC4 do
  begin
    I := 0;
    J := 0;
    for S := 0 to 255 do D[S] := S;
    R := 0;
    U := 1;
    for S := 0 to 255 do
    begin
      Inc(R, D[S] + Ord(Key[U]));
      T := D[S];
      D[S] := D[R];
      D[R] := T;
      Inc(U);
      if U > L then U := 1;
    end;
  end;
end;

procedure RC4Code(var RC4: TRC4Context; const Source; var Dest; Count: Integer); overload;
var
  S: Integer;
  T: Byte;
begin
  with RC4 do
    for S := 0 to Count -1 do
    begin
      Inc(I);
      T := D[I];
      Inc(J, T);
      D[I] := D[J];
      D[J] := T;
      Inc(T, D[I]);
      TByteArray(Dest)[S] := TByteArray(Source)[S] xor D[T];
    end;
end;

procedure RC4Done(var RC4: TRC4Context);
begin
  FillChar(RC4, SizeOf(RC4), 0);
end;

function RC4Code(const Value, Password: String): String; overload;
var
  RC4: TRC4Context;
  Len: Integer;
begin
  RC4Init(RC4, Password);
  try
    Len := Length(Value);
    SetLength(Result, Len);
    RC4Code(RC4, Value[1], Result[1], Len);
  finally
    RC4Done(RC4);
  end;
end;

function BinToHexStr(const Value: String): String;
var
  Size: Integer;
begin
  Size := Length(Value);
  SetLength(Result, Size * 2);
  BinToHex(PChar(Value), PChar(Result), Size);
end;

function HexToBinStr(const Value: String): String;
var
  Size: Integer;
begin
  Size := (Length(Value) +1) div 2;
  SetLength(Result, Size);
  HexToBin(PChar(Value), PChar(Result), Size);
end;

function Encode(const Value, Password: String): String;
begin
  Result := BinToHexStr(RC4Code(Value, Pasword));
end;

function Decode(const Value, Password: String): String;
begin
  Result := RC4Code(HexToBinStr(Value), Password);
end;
Du rufst nun Encode() und respektive Decode() auf.

Gruß Hagen

[EDIT] Fehler im Source beseitigt !, hagen [/EDIT]
  Mit Zitat antworten Zitat
Lamy

Registriert seit: 11. Apr 2004
119 Beiträge
 
Delphi 7 Personal
 
#16

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 16:43
Hey, danke!

Ist der Rc4 - Algorithmus auch in einer Komponente / Unit vorhanden die man vorher implementieren muss?
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#17

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 17:47
Hm, was für eine Frage !

RC4 kannst du aus der Netscape.EXE heraus-pfriemeln, oder als PDF Datei im WEB downloaden, oder als Unit im DEC finden, oder .. oder ... oder viel viel einfacher den obigen Code in dein Projekt kopieren.

Dieser Code wird dann in einer Unit stehen, nämlich in DEINER Unit.

Sogesehen verstehe ich entweder deine Frage nicht richtig, oder du verstehst nicht das obiger Source die komplette Lösung deines Problemes ist. Der Weg in deinen UNIT wäre dann mit der Maus von Links-Oben zu klicken, die linke Maustaste gedrückt lassen und langsam nach unten ziehen. Das macht man so lange bis der obige Source komplett blau-hinterlegt ist (abhängig von deiner Windows-Einstellung). Dann noch Srtg+C auf den eckigen Kasten mit den vielen Tasten vor dem Ding das so farbig leuchtet drücken. Nun noch deinen Source öffnen und wiederum auf dem Kasten mit den vielen tasten Strg+Einfg drücken.

Gruß Hagen

PS: sorry, aber manchmal gibt es wirklich "komische" Fragen
  Mit Zitat antworten Zitat
Lamy

Registriert seit: 11. Apr 2004
119 Beiträge
 
Delphi 7 Personal
 
#18

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 18:24
*duck*

Ich frag ja nur weil der RC5Init, RC5Code, usw. nicht kennt...
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 31. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#19

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 18:47
Ähm 1. wo steht RC5 ?

2. solltest du das in eine eigene Unit verfrachten und diese mit Uses Rc4Unit; (oder ähnlich) einbinden

oder aber am anfang der Haupt-Unit einfügen damit nachfolgende Procedures/Functions das Rc4 Zeuch auf finden können (Grundlagen)
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Lamy

Registriert seit: 11. Apr 2004
119 Beiträge
 
Delphi 7 Personal
 
#20

Re: Verschlüssel, in einer .ini-Datei speichern später auflö

  Alt 26. Mai 2004, 18:57
Ach so, habs!

Danke vielmals!



Lamy
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz