【问题标题】:Python Cryptography Generate Random KeysPython 密码学生成随机密钥
【发布时间】:2025-09-05 02:00:02
【问题描述】:

我正在使用 python Cryptography 模块,并使用文档中的示例生成了私钥和公钥。我遇到的问题是我希望能够生成不同的密钥对。就像我生成一个,但每次运行它时总是生成同一个。我已经尝试尽可能多地阅读文档,但找不到任何解决此问题的方法。谢谢。

【问题讨论】:

  • 检查播种设置在哪里。确保您始终以不同的方式播种算法
  • 我不想问这是否只是一个简单的答案,但是您将如何去做。这似乎是我遇到的问题,我一直在搜索文档但找不到它。
  • 参考您的文档并检查功能“种子”或类似的东西。通常将当前时间传递给此函数。
  • 您使用的是什么特定模块?您能否提供文档链接并发布您的代码?
  • 我正在使用“密码学”模块。网站是 cryptography.io,我的代码与他们提供的 rsa 生成示例几乎相同

标签: python encryption rsa python-cryptography


【解决方案1】:

我实际上是在不久前这样做的,所以我将复制/粘贴我的解决方案:)

import os
from Cryptodome.PublicKey import RSA
from Cryptodome import Random

def generate_keypair(bits=2048):
    random_generator = Random.new().read
    rsa_key = RSA.generate(bits, random_generator)
    return rsa_key.exportKey(), rsa_key.publickey().exportKey()

要生成随机密钥,您必须在 RSA.generate 中包含随机生成器。


更具人类可读性:

from Cryptodome.PublicKey import RSA
from Cryptodome import Random

def generate_keypair(bits=2048):
    random_generator = Random.new().read
    rsa_key = RSA.generate(bits, random_generator)
    print(repr(rsa_key))
    print(repr(rsa_key.publickey()))

generate_keypair()

【讨论】:

  • 我复制并粘贴了您输入的内容,但我一直得到相同的键:/
  • 哦,对不起,我只是看的不够近,我只是看了前几个字符,后来没有看到它的变化。谢谢!
  • 哦,是的,.exportKey() 使它更加神秘且难以阅读。但我为我的程序派上了用场
  • 我复制了确切的代码,运行程序后我等了大约 5 分钟,但终端上没有输出