gpt4 book ai didi

unicode - 如何正确实现 Unicode 密码?

转载 作者:行者123 更新时间:2023-12-04 08:17:43 25 4
gpt4 key购买 nike

添加对 Unicode 密码的支持是开发人员不应忽视的一项重要功能。

尽管如此,在密码中添加对 Unicode 的支持是一项棘手的工作,因为在 Unicode 中可以以不同的方式对相同的文本进行编码,并且您不想因此阻止人们登录。

假设您将密码存储为 UTF-8,请注意这个问题与 Unicode 编码无关,而与 有关。 Unicode 规范化 .

现在的问题是你应该如何标准化 Unicode 数据?

你必须确保你能够比较它。您需要确保下一个 Unicode 标准发布时不会使您的密码验证无效。

注意:仍有一些地方可能永远不会使用 Unicode 密码,但这个问题与 why or when to use Unicode passwords 无关。 ,这是关于如何以正确的方式实现它们。

第一次更新

是否可以在不使用 ICU 的情况下实现这一点,例如使用 OS 进行规范化?

最佳答案

一个好的开始是阅读 Unicode TR 15: Unicode Normalization Forms .然后您意识到这是一项大量工作并且容易出现奇怪的错误 - 您可能已经知道这部分,因为您在这里询问。最后,你下载类似 ICU 的东西和 let it do it for you .

IIRC,这是一个多步骤的过程。首先你分解序列,直到你不能进一步分解 - 例如 é 会变成 e + ´。然后将序列重新排序为明确定义的排序。最后,您可以使用 UTF-8 或类似的东西对生成的字节流进行编码。 UTF-8 字节流可以输入您选择的加密哈希算法并存储在持久存储中。当您想检查密码是否匹配时,请执行相同的过程并将哈希算法的输出与存储在数据库中的内容进行比较。

关于unicode - 如何正确实现 Unicode 密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com