![]()
一份技术周更日志,阅读量不到200,评论区却有人在问"能直接抄吗"。
这不是什么网红项目,是开发者Vinecksie的个人进度记录。但里面埋的三件事——Postgres持久化方案、Argon2密码存储实战、ChaCha20流密码实现——恰好踩中了Rust社区今年最热的三个坑。
Postgres持久化:sqlx的"隐形门槛"
Vinecksie给RustPulse项目做的Postgres方案,核心是解决三个问题:schema怎么初始化、数据怎么灌进去、灌完怎么验证。听起来基础,但sqlx的编译时检查(compile-time checked queries)让这事变得微妙。
你写SQL的时候,sqlx会在编译期连上数据库验证语法。好处是跑起来不会炸,坏处是CI环境没数据库就编译不过。
他的解法是把schema初始化、ingestion pipeline、verification strategy拆成三个阶段文档化。社区里常见的做法是硬编码迁移脚本,或者干脆放弃编译时检查用运行时ORM。Vinecksie选了条中间路:保留sqlx的安全特性,但把数据库依赖隔离在开发环节。
有人在GitHub issue里贴了自己的实现,说"抄了47遍才跑通"。不是真抄了47次,是sqlx的错误提示太像俄罗斯套娃——一个类型不匹配能引出三层嵌套错误。
密码存储:Argon2的"参数地狱"
![]()
《Sealed in Rust》这本书的新章节讲身份系统,Argon2是重头戏。这是2015年密码哈希竞赛的冠军,现在已经是OWASP推荐的标准。
但用对和能用是两回事。Argon2有三个变体:Argon2d防GPU破解、Argon2i防侧信道、Argon2id两者兼顾。选哪个?内存设多大?迭代次数多少?
Vinecksie的文档里列了组数字:内存成本65536 KB(64MB),时间成本3次迭代,并行度4线程。这组参数在2023年的普通笔记本上跑完一次哈希约80毫秒,攻击者用RTX 4090暴力破解的成本会指数级上升。
参数不是越大越好。内存设太高,低端服务器直接OOM;迭代次数太多,用户登录等3秒就想骂娘。
他花了相当篇幅讲"参数退化"——当硬件迭代时,怎么平滑升级已有用户的密码哈希。这事很多系统没做,结果要么永远锁死旧参数,要么强制用户重设密码。
ChaCha20:nonce重用=裸奔
新视频讲ChaCha20,25分钟里有一半时间在警告nonce(number used once,只使用一次的数字)。流密码的本质是用密钥生成伪随机流,再跟明文异或。同一个nonce+密钥组合,生成的流完全一样。
2019年有人分析过,TLS 1.3之前的大规模流量中,约0.02%的ChaCha20实现存在nonce重用。比例看着小,但放到现在全球流量规模里,足够解密海量历史数据。
![]()
Vinecksie的Rust实现用了两种防护:随机nonce(12字节,碰撞概率可忽略)和计数器nonce(严格递增,适合有状态的连接)。代码里加了debug_assert!检查nonce是否全零——这是历史上多个实现踩过的坑,开发者复制粘贴示例代码时忘了改。
视频评论区有个细节:有人问"为什么不用AES-GCM",Vinecksie回复「ChaCha20在纯软件实现上快30%,且没有AES-NI指令集的CPU上差距更大」。这是2014年Google推ChaCha20-Poly1305时的原始动机,现在成了移动端和WASM环境的默认选择。
三件事的共同点
Postgres持久化、Argon2参数调优、ChaCha20 nonce管理——表面不相关,底层是同一个问题:Rust的安全承诺需要开发者填对最后一公里的坑。
编译器能拦住空指针和内存泄漏,但拦不住sqlx的数据库连接配置、Argon2的参数选择、ChaCha20的nonce生成策略。这些决策点散落在文档、RFC、论文里,没有cargo clippy能自动提示。
Vinecksie的周更日志价值就在这里:不是造新轮子,是把"怎么填坑"的过程显性化。RustPulse的文档结构、Sealed in Rust的参数表格、Fearless in Rust的nonce检查代码,都是可直接迁移的模板。
那个说"抄了47遍"的开发者后来补了句:第48遍时终于理解了为什么要那样设计。这大概是技术文档最好的评价——先让人跑起来,再让人想明白。
你最近抄过谁的代码?抄完之后,是更懂了还是更懵了?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.