
Πώς θα χειριστεί τους κωδικούς πρόσβασης για τις υπηρεσίες όταν ο χρήστης εισάγει κάτι που είναι καλύτερο εκπροσωπείται σε Unicode ή κάποιο άλλο μη-λατινικό κωδικοποίηση χαρακτήρων;


Συγκεκριμένα, μπορείτε να χρησιμοποιήσετε ένα κυριλλικό κωδικό ως κωδικό πρόσβασης για την Oracle; Τι κάνετε για να επαληθεύσετε τον κωδικό πρόσβασης ενός χρήστη κατά ένα μηχανισμό ελέγχου ταυτότητας των Windows, αν ο κωδικός πρόσβασης παρέχεται ως UTF-8;


Έχω κάποιες ιδέες για το πώς αυτό θα πρέπει να αντιμετωπίζονται με τον κωδικό μας, αλλά ψάχνω για συμβουλές από άλλους για να βεβαιωθείτε ότι κατεύθυνσή μας είναι υγιής.

 
I18n και κωδικοί πρόσβασης που δεν είναι US-ASCII, Latin1, ή Win1252
====================================================================



Μπορεί να έχετε προβλήματα με τους περιορισμούς μήκους μηχανισμούς ελέγχου ταυτότητας. 


π.χ. Αν το σύστημα καθορίζει ένα μέγιστο μήκος 12 bytes, αυτό θα μπορούσε να ξεπεραστεί εύκολα με πέντε κινεζικών χαρακτήρων σε utf-8, αυτό δεν είναι ένα πρόβλημα ως τέτοιο, επειδή τέσσερις κινεζικούς χαρακτήρες πρέπει να έχουν αρκετή εντροπία, αλλά, πρέπει να είστε προσεκτικοί σχετικά με μηνύματα σφαλμάτων.


μπορεί να προκύψουν άλλα προβλήματα, εάν η mechnism ταυτότητας επιβάλλει κανόνες όπως «τουλάχιστον μία κάθε ένα από κεφαλαία γράμματα, πεζά γράμματα, σημεία στίξης και αριθμητικούς χαρακτήρες» - πολλές γλώσσες δεν έχουν ανώτερη / πεζών χαρακτήρων, και υπάρχουν δεκάδες χαρακτήρες που ορίζεται στο Unicode ότι ένας ντόπιος ομιλητής θα σκεφτείτε, όπως αριθμών, αλλά δεν μπορεί να αναγνωριστεί ως τέτοια από μια κακώς εφαρμοστεί κανόνα. 

 

Η ίδια η κωδικοποίηση δεν θα πρέπει να αποτελέσει πρόβλημα για την κρυπτογράφηση, οι περισσότεροι αλγόριθμοι λειτουργούν σε bytes, όχι σε χαρακτήρες. Το μόνο πράγμα που θα μπορούσε να είναι ένα πρόβλημα είναι το εξής: Η κρυπτογράφηση τον ίδιο κωδικό πρόσβασης με διαφορετικές κωδικοποιήσεις θα μπορούσε να αποφέρει διαφορετικές τιμές εάν τα εξωτικά (μη-ASCII) χαρακτήρες που χρησιμοποιούνται στον κωδικό πρόσβασης. Μετατρέποντας τον κωδικό πρόσβασης σε ένα σταθερό κωδικοποίησης (όπως UTF8) θα πρέπει να λύσει αυτό το πρόβλημα, όμως.

 