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

如何生成256/512位RSA密钥?PyCrypto报错替代方案咨询

生成256/512位RSA密钥的简便替代方案

问题背景

使用PyCryptodome的RSA.generate()生成256或512位密钥时,会触发如下错误:

ValueError: RSA modulus length must be a multiple of 256 and >= 1024

这是因为库内置了安全限制,强制要求RSA密钥长度不小于1024位。如果只是用于测试场景,不想重新编译OpenSSL,可以用以下两种简便方案:

方案1:使用第三方rsa库

这个库支持生成更小的RSA密钥,无需修改底层依赖:

  1. 先安装库:
pip install rsa
  1. 生成密钥的示例代码:
import rsa

# 生成256位密钥(poolsize=1避免多线程,仅测试用)
pub_key, priv_key = rsa.newkeys(256, poolsize=1)

# 用密码加密私钥(PKCS#8格式)
passphrase = b"p@ssw0rd"
encrypted_priv_pem = priv_key.save_pkcs1(encoding="PEM", passphrase=passphrase, pkcs=8)
pub_pem = pub_key.save_pkcs1(encoding="PEM")

# 输出密钥内容
print("加密后的私钥:")
print(encrypted_priv_pem.decode())
print("\n公钥:")
print(pub_pem.decode())

注意:256/512位RSA密钥的安全性极低,仅可用于测试场景,绝对不能用于生产环境。

方案2:修改PyCryptodome的源码限制

直接修改本地PyCryptodome库的RSA.py文件,移除长度限制:

  1. 找到RSA.py的路径(报错信息里已给出:/usr/lib/python3/dist-packages/Crypto/PublicKey/RSA.py)
  2. 打开文件,定位到如下代码段:
if bits < 1024 or (bits & 0xff) != 0:
    # pubkey.getStrongPrime doesn't like anything that's not a multiple of 256 and >= 1024
    raise ValueError("RSA modulus length must be a multiple of 256 and >= 1024")
  1. 修改阈值,比如改成:
if bits < 256 or (bits & 0xff) != 0:
    raise ValueError("RSA modulus length must be a multiple of 256 and >= 256")

或者直接注释掉这段判断(不推荐,容易忽略安全风险)。

注意:修改源码后,升级PyCryptodome会覆盖这个修改,同样仅适合测试场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:40:30