![]() |
Aufruf von Verschlüsselungsverfahren
Hallo ich habe ein Verschlüsselungsalgorithmus in einer separaten Unit gespeichert, die ich Crypt genannt habe. Diese enthält am Ende die Funktionen Encode und Decode, soweit so gut.
in meiner Hauptform habe ich sie auch deklariert: uses Crypt; im laufe des Programmes greife ich auf eine Abfrage zu, die ich in einer Ini-Datei abspeicher. Diese sieht wie folgt aus:
Delphi-Quellcode:
hinzu habe ich noch eine Funktion beim Aufruf des hauptprogrammes gleich in der Form:
procedure TForm1.Button1Click(Sender: TObject);
var ini : TIniFile; begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+ 'key.ini'); if Edit1.Text = Edit2.Text then begin ini.WriteString('Text', 'Key', Edit2.Text); ShellExecute(Application.Handle, 'open', 'winver.exe',nil,nil,SW_SHOW); Form1.Close; end else Label1.Caption := 'klappt nicht'; ini.free;
Delphi-Quellcode:
nun will ich wenn, key.ini noch keine Inhalte hat und erst durch Button1.Click erstellt wird,
procedure TForm1.FormCreate(Sender: TObject);
var ini : TIniFile; P: String; begin Edit2.Text := ''; Label1.Caption := ''; Label2.Caption := ''; ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'key.ini'); P := Ini.ReadString('Text', 'Key', Edit2.Text); if Edit1.Text = P then begin ShellExecute(Application.Handle, 'open', 'winver.exe',nil,nil,SW_SHOW); Application.Terminate(); end; end; diese gleich verschlüsseln mit der Encode-Funktion der Crypt.Unit, jedoch weiss ich nicht wie ich dies anstellen soll, denn wenn ich Encode schreibe kommt der Fehler, dass Encode nicht deklariert ist, obwohl ich ja in der Crypt.Unit folgendes habe:
Delphi-Quellcode:
somit ist Encode da nur ich weiss eben nicht wie ich es ausführen soll. Encode soll den Eintrag aus Edit2.Text nehmen und verschlüsseln und erst dann soll die key.ini erstellt werden mit eben dem verschlüsseltem Inhalt.
function Encode(const Value, Password: String): String;
begin Result := BinToHexStr(RC4Code(Value, Password)); end; Das gleiche gilt für den Decode-Befehl den ich dann im FormCreate aufrüfen würde um zuerst das Edit2.Text Feld aus der key.ini Datei zu entschlüsseln und dann erst übergeben. Hoffe jemand kann mir weiterhelfen. Bitte mit Quellcode [edit=Sharky]Quote-Tags durch Delphi-Tags ersetzt. Mfg, Sharky[/edit] |
Re: Aufruf von Verschlüsselungsverfahren
Hast du denn in der unit Crypt die Funktion auch richtig deklariert?
Delphi-Quellcode:
Wichtig ist, das die Deklaration im Interface-Teil steht, sonst wissen die anderen Units, die diese Unit includen, nicht was die Crypt-Unit alles zur Verfügung stellt.
unit Crypt;
interface function Encode(const Value, Password: String): String; implementation function Encode(const Value, Password: String): String; begin Result := BinToHexStr(RC4Code(Value, Password)); end; |
Re: Aufruf von Verschlüsselungsverfahren
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ini : TIniFile; begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+ 'key.ini'); if Edit1.Text = Edit2.Text then begin Encode(Edit2.Text, 'abcdefgh12345678'); ini.WriteString('Text', 'Key', Edit2.Text); ShellExecute(Application.Handle, 'open', 'winver.exe',nil,nil,SW_SHOW); Form1.Close; end else Label1.Caption := 'klappt nicht'; ini.free;
Delphi-Quellcode:
mit diesem Implementierung kommt zwar kein Fehler mehr und das programm wird komiliert, jedoch wird Edit2.text am Anfang gar nicht verschlüsselt sondern einfach so wie es ist in die ini gespeichert.
procedure TForm1.FormCreate(Sender: TObject);
var ini : TIniFile; P: String; begin Edit2.Text := ''; Label1.Caption := ''; Label2.Caption := ''; ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'key.ini'); P := Ini.ReadString('Text', 'Key', Edit2.Text); Decode(P, 'abcdefgh12345678'); if Edit1.Text = P then begin ShellExecute(Application.Handle, 'open', 'winver.exe',nil,nil,SW_SHOW); Application.Terminate(); end; end; Genau so funktioniert Decode nicht. die Bezeichnung für beide ist:
Delphi-Quellcode:
wie muss ich den befehl jetzt eingeben, damit er doch noch verschlüsselt ?
function Encode(const Value, Password:String):String;
function Decode(const Value, Password:String):String; |
Re: Aufruf von Verschlüsselungsverfahren
Es wäre auch kein Problem, wenn ich die gesamte Ini Datei verschlüsseln würde und nicht nur den Eintrag aus Edit2.text...
also wer mir dabei helfen kann, soll nicht zögern! |
Re: Aufruf von Verschlüsselungsverfahren
So verschlüsselst du und wirfst das Eregbnis in den Bit-Orkus:
Delphi-Quellcode:
Bedenke, dass Encode() eine Funktion ist - der Rückgabewert ist das Ergebnis deiner Verschlüsselung:
Encode(Edit2.Text, 'abcdefgh12345678');
ini.WriteString('Text', 'Key', Edit2.Text);
Delphi-Quellcode:
Grüße vom marabu
ini.WriteString('Text', 'Key', Encode(Edit2.Text, 'abcdefgh12345678'));
|
Re: Aufruf von Verschlüsselungsverfahren
danke für die Antwort marabu :) , jeodhc habe ich jetzt ein erneutes Problem
beim folgendem Aufruf
Delphi-Quellcode:
hoffe dass auch hierbei mir geholfen werden kann.
ini.WriteString('Text', 'key', Encode(Edit2.Text, 'a');
... // wird das Edit2.text Feld ordnungsgemäß encodiert nun zu meinem Problem.. ... ini.ReadString('Text', 'key', Decode(Edit2.Text, 'a'); // hier kommt plötzlich als Ergebnis '' heraus, sprich ein leeres Feld und nicht die gewünschte //Umwandlung des encodierten Strings wieder in seine Ausgangsform..was kann der Grund dafür sein?? //hier die Encode und die Decode funktion.. function Encode(const Value, Password: String): String; begin Result := BinToHexStr(RC4Code(Value, Password)); end; ... function Decode(const Value, Password: String): String; begin Result := RC4Code(HexToBinStr(Value), Password); end; |
Re: Aufruf von Verschlüsselungsverfahren
Es gilt das gleiche Prinzip:
Delphi-Quellcode:
Du willst doch den Funktionswert von ReadString decodieren...
Edit2.Text := Decode(ini.ReadString('Text', 'key', ''), 'a');
marabu |
Re: Aufruf von Verschlüsselungsverfahren
supi danke sehr dafür. Jetzt läuft es problemlos durch.
Danke dass ihr nicht all zu genervt über mein Unwissen seid. :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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