Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi hagen reddman dec (https://www.delphipraxis.net/158374-hagen-reddman-dec.html)

darknes 15. Feb 2011 12:24

Delphi-Version: 7

hagen reddman dec
 
hallo hagen es geht um deine compnente dec wenn ich diesen code verwende
Delphi-Quellcode:
function md4(s:string):string ;
begin
s:=THash_MD5.Create.DigestStr(nil);
result:=s;
end;
bekomme ich einen error an follgender stelle in meinem quellcode
Delphi-Quellcode:
result := GetMD5(IntToHex(x,0));
Zu meiner frage wie muss ich es anpssen das ich deinen code wie diesen hier benutzen kann
Delphi-Quellcode:
result := MD5DigestToStr(MD5String(s));//erstellt einen md5hash
Da es bei dir diese function nicht gibt.

himitsu 15. Feb 2011 13:19

AW: hagen reddman dec
 
MD4 oder MD5 ... was nun?

Wieso wird der Parameter "s" nicht genutzt?

Wann gibst dudas mit
Delphi-Quellcode:
THash_MD5.Create
erstellte Objekt wieder frei?

Di übergist DigestStr ein nil und wunderst dich dann, daß es eventuell knallt?

darknes 15. Feb 2011 14:29

AW: hagen reddman dec
 
Es soll md5 sein die function heisst nur md4(testzwecke).

Selbst wenn ich es freigebe:

Delphi-Quellcode:
t:THash_MD5;
begin
t:=THash_MD5.Create;
t.init;
Result:=t.DigestStr(TFormat_MIME64);
t.done;
end;
Der md5 string soll ja für diese functionen sein;
Delphi-Quellcode:
function GetUser: string; // Function to get UserName
var // Declaring our variables
StrUserName: PChar; // PointerChar
Size: DWord; // DWORD integer Begin //
Begin
Size:=250; // Set size to 250 (max UN length)
GetMem(StrUserName, Size); // Allocate some memory
GetUserName(StrUserName, Size); // API to get UN
result := StrPas(StrUserName); // Return the UN
FreeMem(StrUserName); // Free up the allocated memory
end;

 Procedure RSADecrypt(CT : String; D : String; N : String; var PT : String);
 Var
 c,d1,n1,p : TFGInt;
Begin
ConvertHexStringToBase256String(CT,CT);
Base256StringToFGInt(CT,c);
ConvertHexStringToBase256String(D,D);
Base256StringToFGInt(D,d1);
ConvertHexStringToBase256String(N,N);
Base256StringToFGInt(N,n1);
FGIntModExp(c,d1,n1,p); // C ^ D mod N
FGIntToBase256String(P,PT);
ConvertBase256StringToHexString(PT,PT);
FGIntDestroy(c); // Destroy FGInt (important!)
FGIntDestroy(d1); // Destroy FGInt (important!)
FGIntDestroy(n1); // Destroy FGInt (important!)
FGIntDestroy(p); // Destroy FGInt (important!) End;

end;

function HexToInt(s : string) : Int64; // Convert HEX to Int64 integers
begin // Begin
if (s <> '') and (s[1] <> '$') then // If s != &#8216;&#8217; and s[1] is not $ then
result := strToInt64('$' + s ) // Convert &#8216;$&#8217;+s to Int64 ($ = HEX)
else // Else
result := strToInt64(s); // Convert s to Int64 end;

end;


function Part1(s: string): string; // Part 1
var // Declaring variables
i, x : integer; // Counter and Holder as integers
begin // Begin
x := 0; // Initialize x as 0
for i := 1 to length(s) do // For 1 to 32 do
begin // Begin
x := x + HexToInt(s[i]); // hier knallt es wenn ich oben den code verwende
end; // End
result := new_md5(IntToHex(x,0)); // Get the MD5 of x
end;

function Part2(s: string): string; // Part 2
var // Declaring Variables
i, j, x : integer; // 2 Counters and a holder as integers begin //
Begin
i := 1; // Initialize i as 1
j := 2; // Initialize j as 2
x := 0; // Initialize x as 0
while i <= length(s) do // If i <= 32, then execute loop begin //
Begin
x := x + HexToInt(s[i] + s[j]); // Pair
inc(i,2); // Increment counter
inc(j,2); // Increment counter
end; // End
result := new_md5(IntToHex(x,0)); // Get the MD5 of x oder hier
end;


function Part3(s: string): string; // Part 3
var // Declaring variables
arr : array [1..8] of string; // Array [1..8] of strings
i, x : integer; // Counter and Holder as integers begin //
Begin
arr[1] := s[01] + s[02] + s[03] + s[04]; // I got a little lazy here...
arr[2] := s[05] + s[06] + s[07] + s[08]; // Manually splitting the MD5 into
arr[3] := s[09] + s[10] + s[11] + s[12]; // Groups of 4... made possible by
arr[4] := s[13] + s[14] + s[15] + s[16]; // The creators of Copy/Paste &#402;º
arr[5] := s[17] + s[18] + s[19] + s[20]; // Still going...
arr[6] := s[21] + s[22] + s[23] + s[24]; // And going...
arr[7] := s[25] + s[26] + s[27] + s[28]; // Almost...
arr[8] := s[29] + s[30] + s[31] + s[32]; // Finally!
x := 0; // Initialize x as 0
for i := 1 to 8 do // 1 to length of the array do loop begin //
Begin
x := x + HexToInt(arr[i]); // Groups of 4
end; // End
result := new_md5(IntToHex(x,0)); // Get the MD5 of x
end;

function Part4(s: string): string; // Part 4
var // Refer to Part 3 for more info...
arr : array [1..4] of string;
i, x : integer;
begin
arr[1] := s[01] + s[02] + s[03] + s[04] + s[05] + s[06] + S[07] + s[08];
arr[2] := s[09] + s[10] + s[11] + s[12] + s[13] + s[14] + s[15] + s[16];
arr[3] := s[17] + s[18] + s[19] + s[20] + s[21] + s[22] + s[23] + s[24];
arr[4] := s[25] + s[26] + s[27] + s[28] + s[29] + s[30] + s[31] + s[32];
x := 0;
for i := 1 to 4 do
begin
x := x + HexToInt(arr[i]);
end;
result := new_md5(IntToHex(x,0));
end;

function Part5(s: string): string; // Part 5
var // Refer to Part 3 for more info...
arr : array [1..4] of string;
x : int64;
i : integer;
begin
x := 0;
arr[1] := s[01] + s[02] + s[03] + s[04] + s[05] + s[06] + s[07] + s[08] +
          s[09] + s[10] + s[11] + s[12] + s[13] + s[14] + s[15] + s[16];

arr[2] := s[17] + s[18] + s[19] + s[20] + s[21] + s[22] + s[23] + s[24] +
          s[25] + s[26] + s[27] + s[28] + s[29] + s[30] + s[31] + s[32];
for i := 1 to 2 do
begin
x := x + HexToInt(arr[i]);
end;
result := new_md5(IntToHex(x,0));
end;


procedure TForm1.btn1Click(Sender: TObject);
Var // Declaring variables
A,b: string; // Strings &#8216;a&#8217; and &#8216;b&#8217; (b = serial)
begin // Begin
a := Part1(new_md5(GetUser)); //Part 1
a := Part2(a); // Part 2
a := Part3(a); // Part 3
a := Part4(a); // Part 4
a := Part5(a); // Part 5 { RSA Decrypt the final MD5 hash (result goes in &#8216;b&#8217;): }
RSADecrypt(a,'3E6CBE18ABF0172741C8A583CA54402D',
'D679E4D420CF78D335DC9AD165F9D819',b);
edt1.text := b; // Print out serial end; // End
end;
Wie gesagt das hier geht bei dec ja nicht.
//function GetMD5(s: string): string; // Gets MD5 hash for what’s sent begin //
//Begin
//result := MD5DigestToStr(MD5String(s)); // Calculate MD5 hash hier wird s genutzt
//end;

gammatester 15. Feb 2011 15:11

AW: hagen reddman dec
 
Du mußt doch wohl auch angeben, von was der Hash berechnet werden soll. Diese Zeilen
Delphi-Quellcode:
  t := THash_MD5.Create;
  t.init;
  writeln(t.calcbinary('abc', TFormat_Hex));
  writeln(t.calcbinary('abc', TFormat_MIME64));
liefern zB die richtigen Werte für den Ansistring 'abc':
Code:
Hex:   900150983CD24FB0D6963F7D28E17F72
Mime64: kAFQmDzST7DWlj99KOF/cg==

Deep-Sea 15. Feb 2011 15:55

AW: hagen reddman dec
 
Zitat:

Zitat von darknes (Beitrag 1081843)
Selbst wenn ich es freigebe:

Delphi-Quellcode:
t:THash_MD5;
begin
t:=THash_MD5.Create;
t.init;
Result:=t.DigestStr(TFormat_MIME64);
t.done;
end;

Freigeben? Ja wo denn? Es müsste dieser Form folgen (was es nicht tut):
Delphi-Quellcode:
begin
  LokaleVariable := TEineKlasse.Create;
  try
    // Tue etwas mit LokaleVariable ...
  finally
    LokaleVariable.Free;
  end;
end;

alzaimar 15. Feb 2011 16:09

AW: hagen reddman dec
 
Einen dermaßenen Kommentar-Overkill habe ich noch nie gesehen. :shock:
Delphi-Quellcode:
Begin // Begin
  i := 0; // Initialize i as 0
  inc(i); // Increment i
:wall:
Ein gutes Programm kommt ganz ohne Kommentare aus

himitsu 15. Feb 2011 16:54

AW: hagen reddman dec
 
Ich wollte das noch nicht ansprechen. (PS: selbst Begin kann man kommentieren? :shock: )
Aber mal im Ernst, ist dir aufgefallen, daß sich dadrin auch ein wichtiger Kommentar versteckt, welcher für uns Helfer bestimmt ist?

Ganz ohne nicht, aber nur das Wichtige, welches man wirklich nicht so einfach verstehen kann.

darknes 15. Feb 2011 18:55

AW: hagen reddman dec
 
Deswegen wollte ich die md5 unit von dec verwenden.
Hier wird der md5 string ja generiert aber diese function geht bei mir nicht da die md5.pas einen fehler anzeigt.
Delphi-Quellcode:
//function GetMD5(s: string): string;
//Begin
//result := MD5DigestToStr(MD5String(s)); //stammt aus der md5.pas die ich hier gefunden habe
//end;
Und in hex wird der md5 ja hier umgewandelt :
Delphi-Quellcode:
result := new_md5(IntToHex(x,0));
Hier wird doch der benutzer name in hex umgewandelt:
Delphi-Quellcode:
Part1(new_md5(GetUser));
Allso kann man keinen normalen md5 string generiren mit dieser unit?
@gammatester teste doch einfach mal die getmd5 function und du siehst was rauskommt.
Der md5 string soll ja für die anderen sachen erstellt werden nicht für 'abc'
sondern einen md5 string für den MD5 Hash the UserName

lbccaleb 15. Feb 2011 19:19

AW: hagen reddman dec
 
Zitat:

Zitat von darknes (Beitrag 1081968)
Hier wird der md5 string ja generiert aber diese function geht bei mir nicht da die md5.pas einen fehler anzeigt.

Ja was denn für ein Fehler? Vllt solltest du diesen mal genau benennen damit man dir hier weiter helfen kann!

darknes 15. Feb 2011 19:30

AW: hagen reddman dec
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok hier an diese stelle
Delphi-Quellcode:
MD5Update(Context, @Buffer, ReadBytes);
zeigt ihr mir diesen error an [Error] md5.pas(407): Incompatible types: 'Array' and 'TByteArray'
hier ist die md.pas die ich verwende.
Da ich nichts an der md5.pas geändert habe verstehe ich bei diesem error nur bahnhof.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr.
Seite 1 von 2  1 2      

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