You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go Gin使用Bcrypt加密密码响应耗时500-900ms是什么原因?

Bcrypt加密高耗时问题原因说明

这个高耗时属于bcrypt算法的设计特性,并不是包本身存在bug,核心原因如下:

  • 成本因子(cost)设置过高:你调用bcrypt.GenerateFromPassword时传入的第二个参数值为12,bcrypt的计算耗时和2的cost次方成正比,cost=12意味着底层需要执行4096次哈希迭代,在普通服务器CPU上的耗时刚好落在500ms~1000ms区间,这个设计的目的是对抗暴力破解攻击,即使密码哈希泄露,攻击者破解单个哈希的成本也会非常高。
  • 场景适配问题:bcrypt是专门为用户密码存储这类低频场景设计的,如果你在每个普通接口请求中都执行bcrypt加密(如示例代码中的GET接口每次请求都做哈希操作),自然会出现接口响应慢的问题,真实业务中仅需在用户注册、修改密码这类低频操作时执行bcrypt加密即可。

优化建议

如果需要平衡安全和响应速度,可以根据业务要求适当调低cost值:

cost每降低1,加密耗时就会减半,比如调整到10时,加密耗时会降到100ms~200ms区间,大部分业务场景下这个安全强度已经足够。

另外你当前代码中忽略了bcrypt.GenerateFromPassword返回的错误,建议补充错误处理逻辑,避免异常场景下未生成有效哈希的问题。


内容的提问来源于stack exchange,提问作者ser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:27:01