Einzelnen Beitrag anzeigen

Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

Re: Hash erzeugen während die Datei übertragen wird

  Alt 13. Nov 2008, 17:06
Du kannst die Windows-Crypt-API benutzen:
Delphi-Quellcode:
type MD5_CTX = packed record
  i: packed array[0..1] of longint; // ULONG[2]
  buf: packed array[0..3] of longint; // ULONG[4]
  _in: packed array[0..63] of byte; // unsigned char[64]
  digest: packed array[0..15] of byte; // unsigned char[16]
end;

procedure MD5Init(var context: MD5_CTX); stdcall; external 'Cryptdll.dllname 'MD5Init';
procedure MD5Update(var context: MD5_CTX; const input; inputLength: word); stdcall; external 'Cryptdll.dllname 'MD5Update';
procedure MD5Final(var context: MD5_CTX); stdcall; external 'Cryptdll.dllname 'MD5Final';


// das nur mal als Beispiel wie es funktioniert
function StreamToMD5String(x: TStream): string;
var context: MD5_CTX;
    buffer: packed array[0..511] of byte;
    length: integer;
    i: integer;
begin
     MD5Init(context);
     x.Position := 0;
     repeat
           length := x.Read(buffer, 512);
           MD5Update(context, buffer, length);
     until length <= 0;
     MD5Final(context);

     for i := 0 to 15 do
         result := result + IntToHex(context.digest[i], 2);
end;
MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat