Zeichensätze für Zufallszeichenfolgen

Der Zeichensatz, den Sie für Zufallszeichenfolgen wählen, beeinflusst Entropie, Kompatibilität und Benutzerfreundlichkeit. Diese Anleitung hilft Ihnen, geeignete Zeichensätze für verschiedene Anwendungsfälle auszuwählen.

Standard-Zeichensätze

Kleinbuchstaben (a-z) bieten 26 Zeichen und 4,7 Bit Entropie pro Zeichen. Dies ist der lesbarste und kompatibelste Zeichensatz, funktioniert in groß-/kleinschreibungsunabhängigen Systemen und ist einfach mündlich zu kommunizieren. Er erfordert jedoch längere Zeichenfolgen, um dieselbe Entropie wie Alternativen mit gemischter Groß-/Kleinschreibung zu erreichen.

Großbuchstaben (A-Z) haben identische Eigenschaften wie Kleinbuchstaben - 26 Zeichen und 4,7 Bit pro Zeichen. Die Kombination von Klein- und Großbuchstaben ergibt 52 Zeichen und 5,7 Bit pro Zeichen, was die Sicherheit erhöht, ohne Sonderzeichen hinzuzufügen, die Kompatibilitätsprobleme verursachen könnten.

Ziffern (0-9) fügen 10 Zeichen hinzu. Alphanumerische Kombinationen (a-z, A-Z, 0-9) bieten 62 Zeichen und 5,95 Bit pro Zeichen. Dies ist weitgehend kompatibel und funktioniert in den meisten Kontexten: URLs, Datenbanken, Dateinamen und Programmieridentifikatoren.

Sonderzeichen (!@#$%^&*()_+-=[]{}|;:,.<>?) maximieren die Entropie mit 6,55 Bit pro Zeichen in Kombination mit alphanumerisch (94 druckbare ASCII-Zeichen insgesamt). Sie führen jedoch Kompatibilitätsherausforderungen ein und müssen möglicherweise in URLs, Shells oder Datenbanken escaped werden.

Die Beziehung zwischen Zeichensatzgröße und Entropie ist logarithmisch: Entropie pro Zeichen = log2(Zeichensatzgröße). Das Verdoppeln der Zeichensatzgröße verdoppelt die Entropie nicht - es fügt ein Bit pro Zeichen hinzu. Von 62 auf 94 Zeichen zu gehen, erhöht die Entropie nur um etwa 0,6 Bit pro Zeichen.

URL-sichere Zeichensätze

URL-sichere Zeichenfolgen vermeiden Zeichen mit speziellen Bedeutungen in URLs. Die unreservierten Zeichen in URLs sind: A-Z, a-z, 0-9, Bindestrich (-), Punkt (.), Unterstrich (_) und Tilde (~). Diese 66 Zeichen benötigen niemals URL-Kodierung.

Base64URL ist eine Standard-URL-sichere Kodierung, die A-Z, a-z, 0-9, Bindestrich (-) und Unterstrich (_) verwendet - insgesamt 64 Zeichen. Sie ersetzt Plus (+) und Schrägstrich (/) von Standard-Base64, die spezielle URL-Bedeutungen haben. Dies ist der De-facto-Standard für URL-sichere Zufallszeichenfolgen.

Abfrageparameter haben zusätzliche Überlegungen. Während Sie beliebige Zeichen URL-kodieren können, vermeidet das Vermeiden der Notwendigkeit zu kodieren Code-Vereinfachung und macht URLs lesbarer. Bleiben Sie bei alphanumerisch plus Bindestrich und Unterstrich für Abfrageparameterwerte, die als Tokens verwendet werden.

Fragmente (der Teil nach #) haben leicht unterschiedliche Regeln, profitieren aber im Allgemeinen von denselben Zeichensatzbeschränkungen. Einige Frameworks parsen Fragmentinhalte, daher verhindern URL-sichere Zeichen unerwartetes Verhalten.

Pfadsegmente profitieren von restriktiven Zeichensätzen. Während viele Sonderzeichen technisch in URL-Pfaden gültig sind, wenn sie kodiert werden, macht die Verwendung nur alphanumerischer Zeichen plus Bindestrich Pfade sauberer und kompatibler mit verschiedenen Webservern und Proxys.

Ausschließen mehrdeutiger Zeichen

Mehrdeutige Zeichen sehen in vielen Schriftarten ähnlich aus und verursachen Verwirrung, wenn Menschen Zeichenfolgen lesen oder eingeben. Die problematischsten sind: 0 (Null) und O (Großbuchstabe o), 1 (eins), l (Kleinbuchstabe L) und I (Großbuchstabe i).

Wann mehrdeutige Zeichen auszuschließen sind, hängt von menschlicher Interaktion ab. Wenn Benutzer die Zeichenfolgen niemals sehen (rein interne Tokens), schließen Sie alle Zeichen für maximale Entropie ein. Wenn Benutzer Zeichenfolgen lesen müssen (Anzeigen von Bestätigungscodes), schließen Sie mehrdeutige Zeichen für Klarheit aus. Wenn Benutzer Zeichenfolgen eingeben müssen (Eingeben von Backup-Codes), schließen Sie definitiv mehrdeutige Zeichen aus, um Fehler zu verhindern.

Die Entropiekosten des Ausschließens mehrdeutiger Zeichen sind gering. Das Entfernen von 0, O, 1, l, I aus alphanumerisch (62 Zeichen) lässt 57 Zeichen übrig. Dies reduziert die Entropie von 5,95 auf 5,83 Bit pro Zeichen - nur 0,12 Bit pro Zeichen. Eine 20-Zeichen-Zeichenfolge verliert etwa 2,4 Bit Gesamtentropie, leicht kompensiert durch Hinzufügen eines zusätzlichen Zeichens.

Zusätzliche Ausschlüsse können die Benutzerfreundlichkeit verbessern. Einige schließen 0 und O aus, behalten aber 1, l, I, wenn der Schriftkontext klar ist. Andere schließen Z und 2 aus, die in einigen Schriftarten ähnlich aussehen können. Vokale könnten ausgeschlossen werden, um das versehentliche Generieren von Wörtern zu verhindern (die beleidigend oder verwirrend sein könnten). Der Kompromiss ist immer: Wie viel verbessert Ausschluss die Benutzerfreundlichkeit versus wie viel reduziert es die Entropie?

Benutzerdefinierte Zeichensätze für spezifische Kontexte lösen domänenspezifische Probleme. Hexadezimal (0-9, a-f) ist von Entwicklern universell verstanden und bietet saubere, eindeutige Zeichenfolgen. DNA-Sequenzen verwenden A, C, G, T. Morsecode verwendet Punkte und Striche. Definieren Sie Zeichensätze basierend auf Ihren Anforderungen und berechnen Sie Entropie, um sicherzustellen, dass Zeichenfolgen lang genug für ihren Zweck sind.

Tool ausprobieren

Random String Generator

Random String Generator

Verwandte Artikel