Autor Beitrag
SiegfriedXX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Sa 05.04.08 05:29 
Das Problem ist folgendes:

ich möchte gern mit Delphi (7) die MD5 Checksumme einer Datei herrausfinden.. einen netten code dafür hab ich auch schon im internet gefunden:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
{This is a lightweight implementation of the MD5 checksum algorithm in Delphi. It uses Windows' Crypto API.

You need the Crypto API headers for Delphi from delphi-jedi.org (Interface for Microsoft CryptoAPI version 2.0). Add Wcrypt2 to your uses clause.
}

function md5(const Input: String): String;
var
  hCryptProvider: HCRYPTPROV;
  hHash: HCRYPTHASH;
  bHash: array[0..$7fof Byte;
  dwHashLen: DWORD;
  pbContent: PByte;
  i: Integer;
begin
  dwHashLen := 16;
  pbContent := Pointer(PChar(Input));

  Result := '';

  if CryptAcquireContext(@hCryptProvider, nilnil, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT or CRYPT_MACHINE_KEYSET) then
  begin
    if CryptCreateHash(hCryptProvider, CALG_MD5, 00, @hHash) then
    begin
      if CryptHashData(hHash, pbContent, Length(Input), 0then
      begin
        if CryptGetHashParam(hHash, HP_HASHVAL, @bHash[0], @dwHashLen, 0then
        begin
          for i := 0 to dwHashLen - 1 do
          begin
            Result := Result + Format('%.2x', [bHash[i]]);
          end;
        end;
      end;
      CryptDestroyHash(hHash);
    end;
    CryptReleaseContext(hCryptProvider, 0);
  end;

  Result := AnsiLowerCase(Result);
end;
{
Parsed in 0.100 seconds, using GeSHi © 2005 Nigel McNie
Example: md5('') returns d41d8cd98f00b204e9800998ecf8427e.
}



Aber leider weiß ich nicht wie man diese Wcrypt2.pas Datei die ich mir runtergeaden hab auf der Seite (im Quellcode zu finden) anwende bzw so einbaue bei delphi das ich die befehle in der uses verwenden kann. bei mir erkennt er einfach Wcrypt2 nicht und ich find auch nirgens eine genaue beschreibung wie man dieses einrichtet. Scheint selbstverständlich zu sein für alle. Hoffe ihr könnt mir da hilfen. Wie gesagt mein Ziel ist es die MD5 Summe abzufragen um die zu vergleichen mit einer summe die im programm fest gespeichert ist. Da sich die Datei draußen ja nicht verändern sollte (also keiner kann die ändern um so z.b. zu hacken usw.) hauptsächlich gehts mir aber darum das genauer zu verstehen mit delphi und den uses.


Moderiert von user profile iconChristian S.: Topic aus Windows API verschoben am Mo 07.04.2008 um 00:47
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Sa 05.04.08 07:55 
Morgen und :welcome: !

Eigentlich sollte es genügen die Unit in dein Projektverzeichnis zu kopieren und dann bei uses hinzuzufügen:
ausblenden Delphi-Quelltext
1:
uses Windows, Messages, ..., WCrypt2;					

Delphi sucht im aktuellen Projektordner und IIRC in <Delphi Programmverzeichnis>\lib inkl. Unterverzeichnissen zuerst nach UnitName.dcu (die vorkompilierte Variante der Unit) und dann nach UnitName.pas. Wenn er nur eine .pas findet, kompiliert er sie zu einer .dcu; dann bindet er die .dcu ein.

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Sa 05.04.08 15:07 
OK hab sie in den Ordner reingeschoben wo mein Projekt auch drin lag und funktioniert DANKE!

nur wüsste ich gern wo man sie nun ganz genau im Delphi Ordner reinpacken müsste damit er nicht rummeckert beim neuen Projekt z.b.

Ansonsten recht herzlichen Danke!
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 07.04.08 00:43 
also eine frage ist leider oben noch offen geblieben in welchen ordner bei delphi genau?

delphi 7 enterprise edition


und irgendwie finde ich die md5 funktioon oben merkwürdig.. es funktionier so halbwegs ich veränder die datei aber die md5 checksum bleibt gleich außer ich erstelle eine neue z.b. und nehm die dann.. wann ändert sich eine checksum genau?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 07.04.08 00:58 
user profile iconSiegfriedXX hat folgendes geschrieben:
..reinpacken müsste damit er nicht rummeckert beim neuen Projekt z.b.


Du musst den Suchpfad in den Projekt-Optionen einstellen. Für mehrere Projekte auch die Checkbox "Vorgabe" anklicken. Dann gilts für neue. Bei älteren muss das von Hand nachgeholt werden.

_________________
Gruß
Hansa
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 17.04.08 15:51 
user profile iconhansa hat folgendes geschrieben:

Du musst den Suchpfad in den Projekt-Optionen einstellen. Für mehrere Projekte auch die Checkbox "Vorgabe" anklicken...



also
Projekt->Optionen (in der Menüleiste von Delphi ganz oben) ist ja leicht zu finden.. auch da wo man das häcken machen müsste (VORGABE) steht ganz unten und ist auch nicht zu übersehen. Doch wo füg ich nun die komponente mit ein muss ich sie reinladen oder wie genau geht das von statten??? Unter den Projektoptionen gibt es Packages muss da was rein?
SiegfriedXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 04.09.08 19:03 
So nun für alle..


Wie entpackt man Bibliotheken (library) in Delphi:


Ganz einfach wenn man es erstmal weiß...


1. Eure library besitzt immer eine .pas Datei
2. Alle .pas Dateien müsst ihr in euer Delphi Verzeichnis packen

Beispiel: (bei mir wäre es)
"C:\Programme\Borland\Delphi7\Source\Vcl"

3. Befinden sich .dcu oder .dcp Daten in dem Paket so müsst ihr diese in das Verzeichniss:
"C:\Programme\Borland\Delphi7\Lib" packen.

4. Bestimmte Bibliotheken benötigen eine Installation. (Diese nennt mann dann Packages und können in Delpsi selbst installiert werden)

einfach auf Komponente (in der Menüleiste oben) dann dort auf Packages installieren





Hoffe konnte vielen anderen damit helfen auch wenn es so selbstverständlich für einige ist es steht NIRGENS gut beschrieben bis jetzt ;)


Thema ist damit abgeschlossen