添加对 Unicode 密码的支持是开发人员不应忽视的一项重要功能。
尽管如此,在密码中添加对 Unicode 的支持是一项棘手的工作,因为相同的文本可以在 Unicode 中以不同的方式编码,并且您不希望因此而阻止人们登录。
假设您将密码存储为 UTF-8,请注意这个问题与 Unicode encodings 无关,它与Unicode normalization有关。
现在的问题是如何规范化Unicode 数据?
你必须确保你能够比较它。您需要确保下一个 Unicode 标准发布时不会使您的密码验证无效。
注意:仍然有一些地方可能永远不会使用 Unicode 密码,但这个问题不是关于为什么或何时使用 Unicode 密码,而是关于如何以正确的方式实现它们。
第一次更新
是否可以在不使用 ICU 的情况下实现这一点,例如使用操作系统进行规范化?