Es können Probleme mit Nicht-ASCII-Zeichen auftreten. Ein Passwort ist eine Folge von Glyphen, aber die Passwortverarbeitung (Hashing) erfordert eine Folge von Bits , sodass es eine deterministische Möglichkeit geben muss, Glyphen in Bits umzuwandeln. Dies ist der ganze trübe Sumpf von Codepages. Selbst wenn Sie sich an Unicode halten, treten Probleme auf:
-
Ein einzelnes Zeichen kann mehrere Zerlegungen als Codepunkte haben. Zum Beispiel kann das "é" -Zeichen (das auf Französisch sehr häufig vorkommt) entweder als einzelner Codepunkt U + 00E9 oder als Sequenz U + 0065 U + 0301 codiert werden; Beide Sequenzen sollen äquivalent sein. Ob Sie das eine oder das andere erhalten, hängt von den vom Eingabegerät verwendeten Konventionen ab.
-
Eine Unicode-Zeichenfolge ist eine Folge von Codepunkten (welche sind) Ganzzahlen im Bereich von 0 bis 1114110). Es gibt verschiedene Standardcodierungen zum Konvertieren einer solchen Sequenz in Bytes. Am häufigsten sind UTF-8, UTF-16 (Big-Endian), UTF-16 (Little-Endian), UTF-32 (Big-Endian) und UTF-32 (Little-Endian). Jedes dieser Elemente kann mit einer Stückliste beginnen oder nicht.
Daher kann ein einzelnes "é" mit mindestens zwanzig sinnvoll in Bytes codiert werden verschiedene Varianten, und das ist, wenn man sich an "Mainstream Unicode" hält. Latin-1-Codierung oder das Microsoft-Gegenstück ist ebenfalls weit verbreitet. Stellen Sie daher sicher, dass 21. Welche Codierung für eine bestimmte Software verwendet wird, kann von vielen Faktoren abhängen. einschließlich des Gebietsschemas . Es ist störend, wenn sich der Benutzer nicht mehr an seinem Computer anmelden kann, weil er die Konfiguration von "Kanadisch - Englisch" auf "Kanadisch - Französisch" umgestellt hat.
Experimentell werden die meisten Probleme dieser Art vermieden, indem Kennwörter auf den Bereich von druckbaren ASCII-Zeichen beschränkt werden (solche mit Codes zwischen 32 und 126 - persönlich würde ich das tun Vermeiden Sie Leerzeichen, machen Sie also 33 bis 126) und erzwingen Sie die Monobyte-Codierung (keine Stückliste, ein Zeichen wird zu einem Byte). Da Passwörter ohne visuelles Feedback auf verschiedenen Tastaturen eingegeben werden sollen, sollte die Liste der Zeichen für eine optimale Benutzerfreundlichkeit noch eingeschränkter sein (ich kämpfe täglich mit kanadischen Layouts, bei denen das, was auf der Tastatur geschrieben ist, nicht funktioniert müssen unbedingt mit dem übereinstimmen, was der Computer für richtig hält, insbesondere wenn eine oder zwei verschachtelte RDP-Verbindungen durchlaufen werden (die Zeichen '<', '>' und '\' bewegen sich am häufigsten). Mit nur Buchstaben (Groß- und Kleinbuchstaben) und Ziffern ist alles in Ordnung.
Sie können sagen, dass der Benutzer verantwortlich ist. Es steht ihm frei, beliebige Zeichen zu verwenden, solange er sich mit dem Problem der Eingabe befasst. Aber das ist letztendlich nicht haltbar: Wenn Benutzer Probleme haben, rufen sie Ihren Helpdesk an, und Sie müssen einen Teil ihrer Fehler annehmen.