Den Dateityp könnte man noch in die Hash-Berechnung mit aufnehmen.
Also so: Hash(Dateidaten + Dateigröße + Dateityp).
Zusätzlich könntest du auch zwei Hash-Algorithmen verwenden.
Die Idee, einen eigenen Prüfsummen-Algorithmus zu erfinden, solltest du lieber vergessen.
Vielleicht würdest du Spaß daran haben, aber besser und schneller als die aktuell verfügbaren, die Mathe-Genies entwickelt haben, wird deiner sicherlich nicht.
Eigenen Prüfsumme Algo
Re: Eigenen Prüfsumme Algo

Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Eigenen Prüfsumme Algo
Meinst du mit Dateityp die Dateiendung? Das ist doch nur Schall und Rauch. Und einem Linux sind Dateiendungen sowieso egal.
Re: Eigenen Prüfsumme Algo
Dann nimmt man stattdessen die magische Zahl. 
Re: Eigenen Prüfsumme Algo
Ich meine damit die magische Zahl und die Dateiendung.NicTheQuick hat geschrieben:Meinst du mit Dateityp die Dateiendung? Das ist doch nur Schall und Rauch. Und einem Linux sind Dateiendungen sowieso egal.
Mir ist bekannt, dass die Dateiendung meistens nicht für die Identifizierung des Dateityps erforderlich ist und nur existiert, damit der Dateityp schon am Dateinamen erkennbar ist, ohne vorher die magische Zahl auszuwerten.
Es gibt auch Dateitypen, die keine magische Zahl haben und ohne die Datenstruktur zu analysieren der Dateityp nur mit der Dateiendung identifiziert werden kann.
Vielleicht irre ich mich, aber ich denke, um so mehr Informationen von der Datei in die Hash-Berechnung einbezogen wird, um so geringer ist die Wahrscheinlichkeit, dass zwei unterschiedliche Dateien identische Hash-Werte liefern.
Gerade ist mir noch eine weitere Variante eingefallen:
Hash(Dateidaten + [Dateidaten rückwärts gelesen] + Dateigröße + Dateityp)
Hier könnte man noch, wie hier bereits vorgeschlagen wurde, z. B. die ersten paar Megabytes und die letzten paar Megabytes nochmal mit in die Hash-Berechnung rein nehmen.

Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Eigenen Prüfsumme Algo
Prüfsummen sind eigentlich so gedacht, dass man sie einfach auf die Menge zu prüfender Daten anwendet. Die Entropie ändert sich nicht, wenn man die Datei nochmal rückwärts anhängt oder sowas. Der Dateityp ist in der Prüfsumme schon enthalten, immerhin erkennt man ihn am Dateiinhalt. Es macht keinen Sinn, den nochmal zu extrahieren und miteinzubeziehen. Die Entropie bleibt wieder gleich. Bei SHA-1 wird die Datenlänge mit in den Hash einbezogen. Also auch das ist unnötig.
Wenn man Dateien vergleichen will, macht man es aus Geschwindigkeitsgründen so, wie es hier im Thread schon öfter gesagt wurde: Dateien verschiedener Größen sind unterschiedlich. Dateien gleicher Größe kann man mittels Hash-Verfahren vergleichen. Bei gleichem Hash kann man die Datei nochmal 1:1 vergleichen, ist aber meistens unnötig.
Hasht man jetzt jede Datei komplett, dauert das mitunter sehr lange, deswegen wird das Verfahren meistens geändert und nur ein Bruchteil der Datei gehasht, z.B. ein Stück vom Ende und ein Stück vom Anfang, vielleicht auch noch ein Stück genau in der Mitte. Der Hash lässt sich so bei jeder Dateigröße gleich schnell berechnen, aber ist natürlich vollkommen unsicher und ein nachfolgender 1:1-Vergleich muss zwingend durchgeführt werden, wenn die Hashes gleich sind.
Wenn man Dateien vergleichen will, macht man es aus Geschwindigkeitsgründen so, wie es hier im Thread schon öfter gesagt wurde: Dateien verschiedener Größen sind unterschiedlich. Dateien gleicher Größe kann man mittels Hash-Verfahren vergleichen. Bei gleichem Hash kann man die Datei nochmal 1:1 vergleichen, ist aber meistens unnötig.
Hasht man jetzt jede Datei komplett, dauert das mitunter sehr lange, deswegen wird das Verfahren meistens geändert und nur ein Bruchteil der Datei gehasht, z.B. ein Stück vom Ende und ein Stück vom Anfang, vielleicht auch noch ein Stück genau in der Mitte. Der Hash lässt sich so bei jeder Dateigröße gleich schnell berechnen, aber ist natürlich vollkommen unsicher und ein nachfolgender 1:1-Vergleich muss zwingend durchgeführt werden, wenn die Hashes gleich sind.

