![]() |
AW: Eindeutige ID aus einem String berechnen
Zitat:
|
AW: Eindeutige ID aus einem String berechnen
Zitat:
Und selbst dann ist dein Einwand doch vollkommen irelevant, weil das Problem doch trotzdem da ist: Es gibt mehrere Strings mit dem selben CRC-Wert. Also ist er nicht eindeutig, zumindest nicht in beide Richtungen. Somit für die Fragestellung nicht zu gebrauchen. Meine Aussage war ja nur, dass das bei Hashfunktionen halt eben nur graduell anders ist: Auch diese sind nicht eindeutig. Zur Sicherheit, und warum CRC für Hashes ungeeignet ist: Ja, natürlich bekommst du in beiden Fällen nicht das originale Word zurück. Ist aber doch vollkommen egal. Ein möglicher Hash reicht ja schon. Und da es bei CRC32 nun mal, wie von mir beschrieben, sehr leicht ist, diesen bzw. eins zu bekommen, ist es ungeeignet. Das heißt aber nicht, dass Hashfunktionen wie SHA128 "eindeutig" sind. Sie sind nur "eineutiger". |
AW: Eindeutige ID aus einem String berechnen
Verstehe nicht, was gegen "Durchnummerieren" spricht.
Und nur zum Verständnis: eine ![]() Sherlock |
AW: Eindeutige ID aus einem String berechnen
Zitat:
Dafür müsstest du ja eine
Delphi-Quellcode:
oder besser noch ein
TStringList
Delphi-Quellcode:
machen, und alles dort nochmal separat abspeichern.
TDictionary<String, Integer>
|
AW: Eindeutige ID aus einem String berechnen
Schon mal nach alternativen Hash Algorithmen als MD5 geschaut? Es gibt auch welche die nur 64 bit oder 80 bit lange Hashes erzeugen.
DEC beispielsweise enthält die Klasse THash_Sapphire, welche einen Hash Algorithmus umsetzt, der 64 bit Ergebnisse produziert. DEC ist via Github hier zu finden: ![]() |
AW: Eindeutige ID aus einem String berechnen
Zitat:
Macht insg. maximal 256 Ordner und darin dann viele Dateien, im Falle von git meistens mit SHA-1 (wird aber umgestellt glaub ich). Das Argument "Eigentlich hat ein Nutzer in diesen Daten nichts zu suchen, da alles über die Benutzeroberfläche und Business Logik erledigt wird." ist super, wenn eh alle in der Anwendung abrufbar ist, fummeln User in einer zugänglichen Datenstruktur nur zuviel rum. |
AW: Eindeutige ID aus einem String berechnen
Vielleicht ein wenig OT aber vielleicht doch relevant:
Zitat:
Das halte ich für nicht ganz ungefährlich. Vielleicht gefällt dem Benutzer ja der Verzeichnisname nicht und er ändert den. Die Konsequenzen für deine Anwendung kannst nur du abschätzen. Zitat:
Wenn deine Datensätze eine eindeutige ID haben, dann nutze diese. Wenn nicht, dann erzeuge dir welche. Damit bist du dein Problem sofort los, da du die ID für die Verzeichnisse nutzen kannst. Ich kenne deine Anwendung nicht, aber die Nutzung dieser Verzeichnisse sollte nur über die Anwendung passieren. Sobald ein Anwender darin rumpfuschen kann, wird das auch passieren. D.h.: Die Verzeichnisnamen müssen (besser dürfen) für den Anwender nicht lesbar sein. Sobald diese lesbar sind, werden diese "verbessert". EDIT: Zitat:
|
AW: Eindeutige ID aus einem String berechnen
Hier findest du noch Informationen zum Erzeugen eines 32-Bit Integer Hashes eines Strings:
![]() Schau dir dort mal die Funktion Murmur2 an. Kollisionen sind sicher möglich. Ist aber alles eine Frage der Wahrscheinlichkeit. |
AW: Eindeutige ID aus einem String berechnen
Noch eine Anmerkung zu den gebrochenen Hashes. Ich denke, das spielt für ihn keine Rolle. Da das nur unter Laborbedingungen passiert oder bei gezielten Angriffen. Dass sein Programm doppelte Hashes erzeugt, dürfte verschwindet gering sein. Wie viele Jahrzehnte hat man mit ihnen selbst bei sicherheitskritischen Anwendungen gearbeitet?
|
AW: Eindeutige ID aus einem String berechnen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 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-2025 by Thomas Breitkreuz