AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Aufruf von Verschlüsselungsverfahren
Thema durchsuchen
Ansicht
Themen-Optionen

Aufruf von Verschlüsselungsverfahren

Ein Thema von Avax2k · begonnen am 27. Okt 2005 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#1

Aufruf von Verschlüsselungsverfahren

  Alt 27. Okt 2005, 04:05
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:
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;
hinzu habe ich noch eine Funktion beim Aufruf des hauptprogrammes gleich in der Form:
Delphi-Quellcode:
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;
nun will ich wenn, key.ini noch keine Inhalte hat und erst durch Button1.Click erstellt wird,
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:
function Encode(const Value, Password: String): String;
begin
  Result := BinToHexStr(RC4Code(Value, Password));
end;
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.

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]
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Aufruf von Verschlüsselungsverfahren

  Alt 27. Okt 2005, 05:12
Hast du denn in der unit Crypt die Funktion auch richtig deklariert?
Delphi-Quellcode:
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;
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.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Aufruf von Verschlüsselungsverfahren

  Alt 27. Okt 2005, 11:21
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:
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;
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.
Genau so funktioniert Decode nicht.

die Bezeichnung für beide ist:
Delphi-Quellcode:
function Encode(const Value, Password:String):String;
function Decode(const Value, Password:String):String;
wie muss ich den befehl jetzt eingeben, damit er doch noch verschlüsselt ?
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Aufruf von Verschlüsselungsverfahren

  Alt 27. Okt 2005, 13:26
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!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Aufruf von Verschlüsselungsverfahren

  Alt 27. Okt 2005, 14:13
So verschlüsselst du und wirfst das Eregbnis in den Bit-Orkus:

Delphi-Quellcode:
Encode(Edit2.Text, 'abcdefgh12345678');
ini.WriteString('Text', 'Key', Edit2.Text);
Bedenke, dass Encode() eine Funktion ist - der Rückgabewert ist das Ergebnis deiner Verschlüsselung:

ini.WriteString('Text', 'Key', Encode(Edit2.Text, 'abcdefgh12345678')); Grüße vom marabu
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Aufruf von Verschlüsselungsverfahren

  Alt 27. Okt 2005, 18:17
danke für die Antwort marabu , jeodhc habe ich jetzt ein erneutes Problem

beim folgendem Aufruf
Delphi-Quellcode:
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;
hoffe dass auch hierbei mir geholfen werden kann.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Aufruf von Verschlüsselungsverfahren

  Alt 27. Okt 2005, 18:52
Es gilt das gleiche Prinzip:

Edit2.Text := Decode(ini.ReadString('Text', 'key', ''), 'a'); Du willst doch den Funktionswert von ReadString decodieren...

marabu
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Aufruf von Verschlüsselungsverfahren

  Alt 27. Okt 2005, 19:01
supi danke sehr dafür. Jetzt läuft es problemlos durch.
Danke dass ihr nicht all zu genervt über mein Unwissen seid.
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:17 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