AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MD5-Prüfroutine für Delphi 10.2

Ein Thema von Harry Stahl · begonnen am 26. Nov 2017 · letzter Beitrag vom 29. Nov 2017
Antwort Antwort
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.542 Beiträge
 
Delphi 12 Athens
 
#1

MD5-Prüfroutine für Delphi 10.2

  Alt 26. Nov 2017, 15:15
Kennt jemand von Euch eine (schnelle) Prüfroutine, die auch Dateien größer als 4GB verarbeitet, unter Delphi 10.2?

Habe bislang eine unit von Matthias Fichtner verwendet, die kann aber nur Dateien < 4GB (nutzt ein FileMapping), eine andere Variante hat zwar bislang unter XE7 funktioniert, geht aber unter Delphi 10.2 nicht.

Habe jetzt keine Lust großartige Ursachenforschung zu betreiben, wenn es etwas fertiges (gerne kostenlos) gibt, will ich das Rad hier nicht noch mal neu erfinden.
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: MD5-Prüfroutine für Delphi 10.2

  Alt 26. Nov 2017, 15:20
Entweder mit den Jedis
Delphi-Quellcode:
uses
 IdHashMessageDigest, IdHash;

function MD5File(const FileName: string): string;
var
 IdMD5: TIdHashMessageDigest5;
 FileStream: TFileStream;
begin
 // if not TFile.Exists(FileName) then
 // Exit;

 try
  IdMD5 := TIdHashMessageDigest5.Create;
  FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

  try
   Result := Trim(AnsiLowerCase(IdMD5.HashStreamAsHex(FileStream)));
  finally
   FileStream.Free;
   IdMD5.Free;
  end;
 except
 end;
end;
Oder mit Wolfgang Ehrhardt Hash-Units
Nur bei letzterer Möglichkeit weiß ich nicht, wie man die Prüfsumme einer Datei erstellt.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.664 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: MD5-Prüfroutine für Delphi 10.2

  Alt 26. Nov 2017, 15:23
Entweder mit den Jedis

Delphi-Quellcode:
uses
 IdHashMessageDigest, IdHash;
Das ist aber indy, nicht Jedi.

@Harry: Wenn es schnell sein soll, ist aber CRC32 besser. Was ist der Zweck Deiner Prüfsumme?
Thomas Mueller
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: MD5-Prüfroutine für Delphi 10.2

  Alt 26. Nov 2017, 15:24
Indy. Meine ich doch. Habe mich geirrt.

Zitat:
@Harry: Wenn es schnell sein soll, ist aber CRC32 besser.
CRC32 können Wolfgang Ehrhardt Hash-Units auch.
Und die sind ja für Schnelligkeit bekannt.

Nur bei Verwendung der Units ist darauf zu achten, die Unit Hash umzubenennen. Der Fehler wurde doch angeblich von Embarcadero behoben. Denn wenn man Hash von Wolfgang Erhardt in den uses stehen hat, sucht der Compiler nach System.Hash.

Geändert von LTE5 (26. Nov 2017 um 15:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.542 Beiträge
 
Delphi 12 Athens
 
#5

AW: MD5-Prüfroutine für Delphi 10.2

  Alt 26. Nov 2017, 15:50
Danke für die Antworten. Ich benötige die MD5-Funktionalität, um mit meinem Dateimanager z.B. aus dem Netz geladene Dateien zu testen, ob da mit dem Download alles funktioniert hat.

Habe die Indy-Lösung nun mal mit einer 5,3 GB großen Datei getestet (liegt auf einer Festplatte, die per 1GB-Netz verbunden ist), da hat es 4 Minuten gedauert, bis das (richtige) Ergebnis kam.
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: MD5-Prüfroutine für Delphi 10.2

  Alt 26. Nov 2017, 15:52
Zitat:
da hat es 4 Minuten gedauert, bis das (richtige) Ergebnis kam.
Ich habe keine Ahnung, ob das schnell ist oder nicht wenn man bedenkt 5,3 GB und im Netzwerk.

CRC32 ist für dein Vorhaben eher ungeeignet soweit ich weiß.

When is CRC more appropriate to use than MD5/SHA1?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: MD5-Prüfroutine für Delphi 10.2

  Alt 27. Nov 2017, 09:41
Kennt jemand von Euch eine (schnelle) Prüfroutine, die auch Dateien größer als 4GB verarbeitet, unter Delphi 10.2?

Habe bislang eine unit von Matthias Fichtner verwendet, die kann aber nur Dateien < 4GB (nutzt ein FileMapping), eine andere Variante hat zwar bislang unter XE7 funktioniert, geht aber unter Delphi 10.2 nicht.

Habe jetzt keine Lust großartige Ursachenforschung zu betreiben, wenn es etwas fertiges (gerne kostenlos) gibt, will ich das Rad hier nicht noch mal neu erfinden.
Der MD5, der mit Delphi dabei ist, ist dir zu langsam?
Der kann jedenfalls beliebig große Dateien, da er immer in Blöcken von 4096 Bytes in einer Schleife ausliest und den MD5 updated, bis zum Dateiende.

Delphi-Quellcode:
program Project3;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Hash;

procedure Main;
var
  MyFilename: string;
begin
  MyFilename := 'C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\system-images\android-23\android-tv\armeabi-v7a\system.img';
  Writeln(THashMD5.GetHashStringFromFile(MyFilename));
end;

begin
  try
    Main;
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
  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 07:19 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 by Thomas Breitkreuz