Hacker News | 📄 原文链接 | 2026-09-24 收录

更快的 SHA-1 碰撞检测:git 打包校验提速一倍

来源:sam.dev — 46 分 · by srijs

📋 概述

作者在为 git 服务器后端做性能优化时发现,校验客户端上传的 pack 文件是热点:在他的 M4 上校验 git/git 的裸克隆(421,292 个对象、压缩 305MiB、解压后 7.7GiB)要 12.5 秒,其中 84% 花在 SHA-1 上。麻烦在于客户端输入不可信,而 SHA-1 已被证明存在实用的选择前缀碰撞,所以必须使用带碰撞检测的版本:检测版约 900MiB/s,而带硬件指令的普通 SHA-1 能跑 3GB/s。他的新库 sha1dc 有两招:一是把消息扩展表溢出到缓冲区、快路径走硬件、只在可疑块上回退标量重算;二是用一个求解器把约 150 项位级碰撞过滤测试塞进 SIMD 通道。结果是 sha1dc 能跑到普通 SHA-1 速度的 68–81%,而旧库只有 28–29%,pack 校验全核从 2.33 秒降到 1.09 秒。

🔑 核心要点

💡 金句

pack 校验的性能剖析里最大的一块仍然是 SHA-1,所以这段旅程远没有结束。
← 返回 Hacker News 首页