跳到主要内容

6.1. User Code Recommendations (用户代码建议)

对许多用户而言, 最近的一台联网设备会是手机. 通常, 这类设备在切换大小写或输入数字时, 输入方式比计算机键盘更耗时. 为提升可用性, 即提高输入速度并减少重试, 在选择 user code 字符集时应考虑这类设备的限制.

提高输入速度的一种方式是将字符集限制为不区分大小写的 A-Z 字符, 且不包含数字. 这些字符通常可以在移动键盘上输入, 无需使用修饰键. 进一步移除元音以避免随机生成单词后, 可得到 base 20 字符集 BCDFGHJKLMNPQRSTVWXZ. 为提高可读性, 可以包含短横线或其他标点.

遵循此准则的示例 user code WDJB-MJHT 包含 8 个有效字符, 并添加了短横线以方便最终用户阅读. 其熵为 20^8.

纯数字代码也是可用性良好的选择, 尤其适用于面向不使用 A-Z 字符键盘的区域设置的 client, 但这类代码需要更长才能保持高熵.

示例数字 user code 019-450-730 包含 9 个有效数字, 并添加短横线以方便最终用户阅读, 其熵为 10^9.

处理输入的 user code 时, 服务器应去除其为可读性而添加的短横线和其他标点, 使用户是否输入这些标点成为可选行为. 对于仅使用 A-Z 范围字符的代码, 如上文定义的 base 20 字符集, 在比较前应将用户输入转换为大写, 以兼容用户输入等价小写字符的情况. 建议进一步去除所选字符集之外的所有字符, 以减少错误输入的字符 (例如空格字符) 使原本有效的输入失效的情况.

RECOMMENDED 避免使用包含两个或更多容易相互混淆字符的字符集, 例如 "0" 与 "O", 或 "1", "l" 与 "I". 此外, 在实际可行的范围内, 如果字符集中的某个字符可能与字符集之外的字符混淆, MAY 将集合外字符替换为字符集中通常与之混淆的字符. 例如, 使用数字 0-9 字符集时, 可以用 "0" 替换 "O".