java.security.KeyPairGenerator 如何使用外部随机数生成器?

How to use external random number generator with java.security.KeyPairGenerator?

基本上我有一个 RNG 向数据库提供随机数,我想在生成密钥对时使用这些随机数。

据我目前的理解,您可以初始化 KeyPairGenerator 以提供随机源(SecureRandom 对象)。 查看 SecureRandom 文档,我只看到提供种子的可能性,该种子在生成种子时将用作 "base" 种子(方法 generateSeed())。我说得对吗?

我是否必须创建自己的 SecureRandomSpi 实现 class,其中 generateSeed() 方法基本上 return 从数据库中选择一个随机数?

非常感谢有这方面经验的人的建议。

感谢您的支持。

我相信您可以直接使用 subclass SecureRandom,因为它有一个可访问的 no-args 构造函数。例如,您应该查看包 org.bouncycastle.crypto.prng, in particular the FixedSecureRandom class 中的 bouncycastle 库 classes 的源代码。