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

Python crypt库使用Blowfish算法加密密码返回*0的问题如何解决?

问题原因

crypt.crypt返回*0是底层加密库识别到非法参数、或当前运行环境不支持对应哈希算法时的标准错误返回值,对应你这个场景的触发原因通常有两个:

  • 运行环境不支持Blowfish($2y$前缀)哈希算法:Python标准库的crypt模块依赖操作系统底层的crypt实现,Windows原生环境完全不支持Blowfish哈希,部分精简版Linux发行版也可能没有编译对应支持。
  • 盐格式不符合底层要求:你使用的盐末尾多了一个$,Blowfish的合法盐格式为$<算法标识>$<cost参数>$<22位合法base64字符>,不需要在盐段末尾额外添加$,额外的特殊字符会被识别为非法参数。

解决方案

方案1:修正盐格式 + 确认环境支持

  1. 确认当前运行在支持Blowfish哈希的类Unix环境中
  2. 调整盐格式,去掉末尾多余的$,示例合法盐为$2y$04$aaaabbbbccccddddeeee
  3. 修正后重新运行代码即可返回正确的哈希值

方案2:使用跨平台的bcrypt库(兼容性更高)

如果需要跨平台运行,不要依赖系统原生的crypt模块,直接使用独立维护的bcrypt库:

  1. 安装依赖:
    pip install bcrypt
  2. 加密示例代码:
import bcrypt

# 待加密密码需要转为bytes类型
password = "123456".encode("utf-8")
# 自动生成符合$2y$格式的盐,rounds对应cost参数
salt = bcrypt.gensalt(rounds=4, prefix=b"2y")
# 生成哈希值
c_word = bcrypt.hashpw(password, salt)
  1. 密码验证示例代码:
# 验证时直接传入原始密码bytes和已生成的哈希值即可
is_valid = bcrypt.checkpw(password, c_word)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:18:03