PB4.2: ExamineMD5Fingerprint() und ExamineSHA1Fingerprint()
Verfasst: 14.03.2008 10:36
Hallö,
bei den vielen Neuerungen, die die PB4.2 Beta mit sich gebracht hat, sind
(zumindest für mich) einige der neuen Features im allgemeinen Trubel
untergegangen.
Wer den MD5-Hash einer Datei berechnen lassen möchte, der kann dies
unter PB mit MD5FileFingerprint() bewerkstelligen. Problematisch wird es
allerdings, wenn es um sehr große Dateien (beispielsweise *.ISOs)
handelt. MD5FileFingerprint() lädt nämlich zur Berechnung die gesamte
Datei an einem Stück in den Speicher und bei einem 3GB-ISO kann es da
schon mal recht knapp im RAM werden.
Ab PB 4.2 Beta steht uns ExamineMD5Fingerprint() zur Verfügung. Hiermit
kann eine Datei (beispielsweise mittels ReadFile() und ReadData()) in
kleinen Portionen in den Speicher geladen und berechnet werden.
wer indes einen SHA1-Hash generieren lassen möchte, verwendet
ExamineSHA1Fingerprint():
Grüße ... Kiffi
bei den vielen Neuerungen, die die PB4.2 Beta mit sich gebracht hat, sind
(zumindest für mich) einige der neuen Features im allgemeinen Trubel
untergegangen.
Wer den MD5-Hash einer Datei berechnen lassen möchte, der kann dies
unter PB mit MD5FileFingerprint() bewerkstelligen. Problematisch wird es
allerdings, wenn es um sehr große Dateien (beispielsweise *.ISOs)
handelt. MD5FileFingerprint() lädt nämlich zur Berechnung die gesamte
Datei an einem Stück in den Speicher und bei einem 3GB-ISO kann es da
schon mal recht knapp im RAM werden.
Ab PB 4.2 Beta steht uns ExamineMD5Fingerprint() zur Verfügung. Hiermit
kann eine Datei (beispielsweise mittels ReadFile() und ReadData()) in
kleinen Portionen in den Speicher geladen und berechnet werden.
Code: Alles auswählen
#MemBuffSize = 4096
#MD5 = 1
If ExamineMD5Fingerprint(#MD5)
FF = ReadFile(#PB_Any, "D:\fettes.iso")
If FF
MemBuff = AllocateMemory(#MemBuffSize)
While Not Eof(FF)
MemLen = ReadData(FF, MemBuff, #MemBuffSize)
NextFingerprint(#MD5, MemBuff, MemLen)
Wend
FreeMemory(MemBuff)
CloseFile(FF)
MessageRequester("", FinishFingerprint(#MD5))
Else
; Datei konnte nicht geöffnet werden
EndIf
; ExamineMD5Fingerprint konnte nicht durchgeführt werden
EndIf
ExamineSHA1Fingerprint():
Code: Alles auswählen
#MemBuffSize = 4096
#SHA1 = 1
If ExamineSHA1Fingerprint(#SHA1)
FF = ReadFile(#PB_Any, "D:\fettes.iso")
If FF
MemBuff = AllocateMemory(#MemBuffSize)
While Not Eof(FF)
MemLen = ReadData(FF, MemBuff, #MemBuffSize)
NextFingerprint(#MD5, MemBuff, MemLen)
Wend
FreeMemory(MemBuff)
CloseFile(FF)
MessageRequester("", FinishFingerprint(#SHA1))
Else
; Datei konnte nicht geöffnet werden
EndIf
; ExamineSHA1Fingerprint konnte nicht durchgeführt werden
EndIf