浏览器里的“安全阴谋”:为什么 Go 1.27 的 UUIDv7 会离奇丧失随机性? (opens in new tab)

本文永久链接 – 大家好,我是Tony Bai。 在刚刚发布第一个候选版本(RC1)的 Go 1.27 中,一个让开发者感到贴心的特性升级,莫过于标准库终于原生内建了 uuid 包。我们终于可以告别第三方依赖,用最地道、最安全的方式在标准库里生成高并发、时间有序的 UUIDv7。 然而,新包刚上新,一桩诡异的“灵异事件”就在 WebAssembly(WASM)和浏览器生态中传开了。 知名 Go 游戏引擎 Ebitengine 的创造者 hajimehoshi 在测试 Go 1.27rc1 时,提交了一个 Bug(Issue #80084): 当他在浏览器环境(GOOS=js GOARCH=wasm)下调用 Go 1.27 新标准库的 uuid.NewV7() 时,生成的 UUID 居然极度规律。在代表随机数和亚毫秒时间戳的第三组字符中,无论运行多少次,永远雷打不动地包含“7000”! 019ee60f-29b3-7000-a12b-f817e25db8f4 019ee610-29c7-7000-bc34-f04bc09150bb 019ee610-2eb4-7000-884a-d...

Read the original article
Sign in to keep reading the full article.

Keyboard Shortcuts

Navigation

Next / previous post
j/k
Open post
oorEnter
Preview post
v

Post Actions

Love post
a
Like post
l
Dislike post
d
Undo reaction
u
Save / unsave
s

Recommendations

Add interest / feed
Enter
Not interested
x

Go to

Home
gh
Interests
gi
Feeds
gf
Likes
gl
History
gy
Changelog
gc
Settings
gs
Discover
gb
Search
/

General

Show this help
?
Submit feedback
!
Close modal / unfocus
Esc

Press ? anytime to show this help