Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hash mit DEC: wie und welchen (https://www.delphipraxis.net/57409-hash-mit-dec-wie-und-welchen.html)

Davidb 20. Nov 2005 21:50


Hash mit DEC: wie und welchen
 
Moin,
also ich versuche jetzt schon seit einiger Zeit mit dem DEC einen Hash von einem string
zu erstellen. Ich habe mich erstmal für MD5 entschieden. Das problem ist jetzt, dass ich bei
THash_MD5.create() immer folgende meldung bekomme:
[Error] test.pas(82): E2035 Not enough actual parameters
ist ja eigentlich auch klar weil THash_MD5.create() den parameter TProtection erwartet ("sagt" mir zumindest delphi).
Es ist nur so, dass ich keine ahnung habe was das für ein parameter sein soll.

würde mich sehr über hilfe freuen, :-D
david

Ps: würdet ihr mir überhaupt MD5 empfehlen oder ist eine der anderen hash functionen besser?

Davidb 21. Nov 2005 13:22

Re: Hash mit DEC: wie und welchen
 
Nach einigen gesuche in Hagens beispielen habe ich es jetzt halbwegs selbst hinbekommen, allerdings werden jetzt dauernd
exceptions gemeldet und der hash sieht auch immer gleich aus.
vielleicht könnt ihr mir ja sagen was ich alles falsch gemacht habe.
hier mal der Code:
Delphi-Quellcode:
procedure TForm1.codierenClick(Sender: TObject);
    var
      PHash: THash_MD5;
      s: string;
      i: Integer;
      j: Integer;
      n: Integer;
      Hpass: string;
      Format: Integer;
begin
    Format :=fmtHEXL;

    PHash := THash_MD5.create(nil);
    PHash.Init;
    Hpass := PHash.CodeString(pass, paEncode, Format);
    Inhalt.Text := eingabe;
    if length(pass) > 10 then begin
        j := 1;
        s := Inhalt.Text;
        for i := 0 to length(s) do begin
            j := i mod length(Hpass);
            n := Ord(Hpass[j]);
            n := n mod 31;
            s[i] := char(n Xor Ord(s[i]));
         end;

        Inhalt.Text := s;
        eingabe := s;
        PHash.Free;
    end
    else
        Inhalt.Text := 'Sie müssen ein Passwort mit mehr als 10 Zeichen eingeben';
        PHash.Free;
end;
könnte ja auch sein, dass es an meiner XOR methode liegt.
wäre über jede hilfe dankbar,
david

Ps: ich weiß, dass XOR so wie ich es hier benutze sehr unsicher ist, ist bis jetzt jedoch gewollt
david

dahead 21. Nov 2005 13:56

Re: Hash mit DEC: wie und welchen
 
also wenn du wirklich nur md5 brauchst, warum verwendest du nicht bpsw. diese Unit?

hier wird beschrieben wie das funktioniert.

wenn der hash immer gleich aussieht, darf ich fragen, wie er aussieht? vielleicht ist der string dauernd empty?

wo kriegst du exceptions?

Davidb 21. Nov 2005 16:17

Re: Hash mit DEC: wie und welchen
 
ich würde schon gerne das DEC verwenden, weil ich vielleicht auch noch andere verschlüsselungsfunktionen nutzten möchte, oder
zb den zufallsgenerator.
und das der string aus dem der hashwert erzeugt wird leer ist glaube ich nicht, weil die hashwerte schon unterschiedlich sind nur aber nur wenn ich das programm neustarte.
im moment wäre es mir auch wichtiger wenn mir jemand sagen könnte warum mein code dauernd acces violations ausgibt.
grüße, david

Sharky 21. Nov 2005 16:36

Re: Hash mit DEC: wie und welchen
 
Hai Davidb,
ich versuche mal deinen Code zu "beurteilen".

[quote="Davidb"]...
Delphi-Quellcode:
procedure TForm1.codierenClick(Sender: TObject);
    var
      PHash: THash_MD5;
      s: string;
      i: Integer;
      j: Integer;
      n: Integer;
      Hpass: string;
      Format: Integer;
begin
    Format :=fmtHEXL; // Was möchtest du mit "Format" machen? Wenn musst Du es deiner Instanz von THash zuweisen
    PHash := THash_MD5.create(nil); // So, hier erzeugst Du keine Instanz von THash.
    PHash.Init; // Init ist okay.
    Hpass := PHash.CodeString(pass, paEncode, Format); //Und jetzt? Du versuchst deiner Instanz einen Hashstring zu zuweisen.
    Inhalt.Text := eingabe; // Wo kommt den Inhalt her?
    if length(pass) > 10 then begin /pass ist hier auch nicht vorhanden
.
.
end;
Zitat:

könnte ja auch sein, dass es an meiner XOR methode liegt.
Warum denn jetzt XOR? Ich dachte Du möchtest die Hash-Funktionen des DEC von Hagen benutzen?

negaH 21. Nov 2005 16:47

Re: Hash mit DEC: wie und welchen
 
Schau mal in Hash.pas rein

Delphi-Quellcode:
    class function CalcString(const Data: String; Protection: TProtection; Format: Integer): String;
Wie du siehst eine Klassen Methode. Ich weis ein sehr unübliches Design aber ein kompaktes und einfaches. Denn so ist es richtig



Delphi-Quellcode:
Result := THash_MD5.CalcString(Value, nil, fmtHEX);
fertig und Gruß Hagen

Davidb 21. Nov 2005 17:13

Re: Hash mit DEC: wie und welchen
 
danke hagen das wars, jetzt funktioniert es alles wunderbar.

grüße,
david

dominikkv 10. Sep 2007 13:53

Re: Hash mit DEC: wie und welchen
 
hmm...hat sich hier etwas geändert?
Mein Delphi 2007 kennt kein fmtHex, außerdem sieht die deklaration nun so aus:
Delphi-Quellcode:
class function CalcFile(const FileName: String; Format: TDECFormatClass = nil; const Progress: IDECProgress = nil): Binary;

Die Muhkuh 10. Sep 2007 13:57

Re: Hash mit DEC: wie und welchen
 
Hi,

imho heißt es jetzt sowas wie TFormat_Hex.

dominikkv 10. Sep 2007 13:58

Re: Hash mit DEC: wie und welchen
 
Zitat:

Zitat von Die Muhkuh
Hi,

imho heißt es jetzt sowas wie TFormat_Hex.

das hab ich auch schon ausprobiert...
Zitat:

[DCC Fehler] ULastFM.pas(173): E2010 Inkompatible Typen: 'IDECProgress' und 'Class reference'


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 Uhr.
Seite 1 von 2  1 2      

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