CRC32 Checksumme von Dateien

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

BlitzChecker

Betreff: CRC32 Checksumme von Dateien

BeitragSo, Apr 16, 2006 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab im Codearchiv einen Code gefunden, um CRC32 Checksummen von Werten zu erhalten. Aber wie erhalte ich die CRC32 Checksumme einer Datei?

Ich hoffe, ich kriege schnell Antworten Very Happy
www.xairro.com

Hummelpups

BeitragSo, Apr 16, 2006 0:41
Antworten mit Zitat
Benutzer-Profile anzeigen
~EDITIERT~

ImurDoom hatte etwas kränkendes Bild gepostet,
ich glaube er wollte sagen, das die CRC32 Checksumme
wie dort gebildet wird, nur nicht bei einen kleinen string sondern über eine komplette datei.
die Berechnungen bleiben die Gleichen
Jan_



IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

BlitzChecker

BeitragSo, Apr 16, 2006 7:34
Antworten mit Zitat
Benutzer-Profile anzeigen
dann so oder wie?

Code: [AUSKLAPPEN]
Dim CRCTable( 255 )

InitCRC32()

file = ReadFile("datei.xy")
While Not EOF(file)
   value$ = value$ + ReadLine(file)
Wend
CloseFile datei

crc32 = ComputeCRC32( value$ )

Print "CRC32 Hashwert: " + Hex( crc32 )

WaitKey

Function InitCRC32()
        poly% = 3988292384
       
        For i% = 0 To 255
                crc% = i
               
                For j% = 0 To 7
                        If ( crc And 1 )
                                crc = ( crc Shr 1 ) Xor poly
                        Else
                                crc = crc Shr 1
                        EndIf
                Next
               
                CRCTable( i ) = crc
        Next
End Function

Function ComputeCRC32( value$ )
        Length% = Len( value )
        hash% = 4294967295
       
        For i% = 1 To Length
                char$ = Mid( value, i, 1 )
                hash = CRCTable( ( hash Xor Asc( char ) ) And 255 ) Xor ( hash Shr 8 )
        Next
       
        hash = ( hash Xor 4294967295 )
       
        Return hash
End Function
www.xairro.com

Hip Teen

BeitragSo, Apr 16, 2006 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie du es machst ist es zwar richtig, aber dauert (bei großen Dateien) ewig. Hab die Funktion aus dem Codearchiv mal für Dateien umgeschrieben, ich suchs mal grad raus..

BlitzBasic: [AUSKLAPPEN]
Function ComputeCRC32( filename$ )
bank = CreateBank (FileSize(filename$))
file = ReadFile (filename$)
ReadBytes (bank, file, 0, FileSize(filename$))
CloseFile file

length% = BankSize (bank)
hash% = 4294967295

For i% = 1 To length-1
byte = PeekByte (bank, i)
hash = CRCTable( ( hash Xor byte ) And 255 ) Xor ( hash Shr 8 )
Next

hash = ( hash Xor 4294967295 )

Return hash
End Function



Die Funktion InitCRC32() bleibt dabei gleich. Schneller hab ich es nicht hinbekommen (ist aber deutlich schneller als wenn man das ganze per ReadLine einliest..)
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"

skey-z

BeitragSo, Apr 16, 2006 11:00
Antworten mit Zitat
Benutzer-Profile anzeigen
die Dll Blitzsys, zu finden im gleichnamigen unterforum, kann das mit einem befehl, schau doch mal danach
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

BlitzChecker

BeitragSo, Apr 16, 2006 11:10
Antworten mit Zitat
Benutzer-Profile anzeigen
danke an euch beide! ihr habt mir sehr geholfen! Very Happy
www.xairro.com

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group