写下(并搜索)每个 UUID · eieio.games

主要观点:作者因记不住所有 UUID 而将其写下,创建了网站 everyuuid.com 来展示和管理 UUID。过程中面临诸多挑战,如浏览器渲染高度限制、UUID 随机排序及搜索功能实现等。
关键信息

  • 最初用创建足够高的 div 仅渲染可见 UUID 但受浏览器最大滚动位置限制,后采用固定页面高度和存储虚拟滚动位置的方式实现。
  • 为使 UUID 显示有趣且无明显模式,尝试线性同余生成器(LCG)但效果不佳,最终选择费斯特密码(Feistel cipher)添加熵并保证一一映射。
  • 实现搜索功能时,对于特定 UUID 搜索较易,全文本搜索也可实现,但因内存限制无法直接搜索所有 UUID,通过分析搜索字符串生成有效模式并填充剩余数字来生成匹配 UUID。
    重要细节
  • UUID 有 128 位,v4 版本保留 4 位用于版本和 2 或 3 位用于变体,作者选择 2 位变体后有 122 位熵。
  • 费斯特密码基本思想是将输入分成两部分,多次将右半部分通过函数处理后与左半部分进行异或操作,最后合并两部分。
  • 搜索功能实现中,对于搜索字符串在 UUID 中的位置有严格要求,如与版本或变体字符重叠时有特定限制。
  • 作者认为如果对密码分析有更好理解,可能能实现更有效的随机 UUID 排序搜索,但目前先推出了现有功能的网站。
阅读 7
0 条评论