Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Eindeutiger String mit maximaler Anzahl an Zeichen
ich würde gerne etwas programmieren, bei dem es eindeutige Strings gibt, die aber nur eine bestimmte Länge haben.
Das ganze soll ein Code (PIN) sein, den später ein User eingibt. Der Code soll keine 15 Zeichen haben. Der Code soll einfach dazu da sein, damit der User ein Bild abrufen kann. Den Code gibt er in einer Eingabemaske ein...
Ein Code soll pro Projekt nur einmal vorkommen
Der Code soll mind. 4 Stellen haben
Nun habe ich folgendes Problem:
Einen Zufalls - String kann ich ja leicht erzeugen
Eine Abfrage gegen die Datenbank kann ich auch machen, um zuprüfen, ob es den Code bereits gibt
Das Problem ist nun aber, wenn es den Code bereits gibt...
-> Ich will nicht mit einer WHILE Schleife solange eine Datenbank - Abfrage machen müssen, bis es den Code noch nicht gibt.
Daher war meine Idee: Ich habe bereits eine eindeutige ID (Erstellung des Objekts in der DB), ob ich diese bpsw. nutzen kann um mir dann einen UniqueKey mit 4 Zeichen zu erzeugen.
Also:
-> ID -> Unique String mit 4 Zeichen erstellen -> Wenn vorhanden: das gleiche Spiel aber auf 5 Zeichen
Nein, das wird nicht besser. Du kannst die Codes noch Pseudo-Zufaellig generieren, aber dann besteht immer die Gefahr das sie jemand raten kann oder das sie doch noch kollidieren.
Aber je nachdem wie dieser Code generiert wird, welchen Zeichensatz dieser enthalten kann und welche Laenge dieser hat, kannst du den Kollisionsfall als Ausnahmezustand abtun. Nehmen wir mal an du machst "A-Z0-9" mit einer Laenge von 8. Das sind 36^8 also fast 3 Billionen (2.8*10^12) moegliche Kombinationen. Wieviele Bilder willst du denn abrufbar machen gleichzeitig?
Du scheinst hier mit diesem einen Code zwei unterschiedliche Dinge abbilden zu wollen:
1. Die Identifizierung eines Users (oder Bildes)
2. Ein Faktor für die Authentifizierung dieses Users zum Zugriff auf das Bild
Ich würde beide Aspekte voneinander trennen. Nur, weil ein User oder ein Bild eine Authentifizierung des Users braucht, damit der User darauf zugreifen kann, darf diese Authentifizierung (bzw. dieser eine Faktor = der Code) nicht auch als Identifizierungsmerkmal für die zuzugreifende Ressource (das Bild) dienen. Hierfür solltest du noch etwas anderes generieren oder vom User eingeben lassen.
Es können ja auch z.B. mehrere Leute dieselbe PIN an ihrer EC-Karte haben. Denn alleine der PIN identifiziert ja nicht den User bzw. die Karte. Also das mal als Analogon.
Wenn dir das Problem mit dem Erraten des Codes egal ist, z.B.: weil es keine weiteren Anforderungen an die Sicherheit gibt, dann könntest du einen QR-Code und/oder eine UUID/GUID generieren. Mit Mobilgeräten kann man einfach über den QR-Code zugreifen und am PC mit Copy/Paste per UUID.
Wenn dir das Problem mit dem Erraten des Codes egal ist, z.B.: weil es keine weiteren Anforderungen an die Sicherheit gibt, dann könntest du einen QR-Code und/oder eine UUID/GUID generieren.
Wenn dir das Problem mit dem Erraten des Codes egal ist, z.B.: weil es keine weiteren Anforderungen an die Sicherheit gibt, dann könntest du einen QR-Code und/oder eine UUID/GUID generieren. Mit Mobilgeräten kann man einfach über den QR-Code zugreifen und am PC mit Copy/Paste per UUID.
Ich sehe folgende zwei Ansätze:
1) Ich erstelle einen QR Code mit UniqueID -> bpsw. Hash Wert von der ID des Bildes + derzeitige Uhrzeit... User kann dann direkt mit dieser ID das Bild abrufen, wobei hier dennoch eine Abfrage sinnvoll wäre, bpsw. Event-ID (siehe bei 2)), damit man vermeidet, dass man eine zufällige ID erratet...
Da nicht alle mit einem QR Code umgehen können:
2) Neben dem QR Code gibt es ebenfalls eine Login Seite mit:
a) Event-ID
b) Picture-ID
Event-ID könnte dann sowas sein wie: MUD20220707 (diese wird einmalig erstellt)
Password-ID wäre dann eben ein Zufalls - String
-> Aber hier habe ich dann immer noch das Problem mit möglichen doppelten Strings, wie ließe sich das verhinden?
Wie oft glaubst Du, dass Du hier auf Duplikate triffst?!? Eine UUID basiert auch darauf, dass es praktisch nahezu unmöglich ist, zweimal die gleiche Zufallszahl zu generieren.
Abgesehen davon: Du kannst natürlich auch einfach eine irgendwie ermittelte Zahl nehmen, den ggf. noch in eine andere Basis umrechnen und dann jede Ziffer durch ein Zeichen kodieren.
Abgesehen davon: Du kannst natürlich auch einfach eine irgendwie ermittelte Zahl nehmen, den ggf. noch in eine andere Basis umrechnen und dann jede Ziffer durch ein Zeichen kodieren.
sowas hatte ich mir eingangs auch vorgestellt... Wie könnte so eine Codierung dann aussehen?
Man kennt es ja bspw. von YouTube, hier hat ein Video als auch nur 8 Zeichen, wann dann aber trotzdem Unique ist....