给定RSA的den(假设为BigIntegers),如何创建java.security.interfaces.RSAPrivateKey实例。 (此处d表示私有指数,e表示公共指数,n=pq表示RSA模数。)

我以为这真的很简单,但是我在文档或互联网上什么都找不到。

如果有帮助,我已经安装了BouncyCastle。

编辑来阐明:我正在寻找一个实现接口的类,并以de和/或n作为构造函数的参数(或工厂函数的参数等),而不是创建一个新的,随机的密钥或以某种PKCS *格式从文件中读取密钥。

最佳答案

好吧,这是给定私有指数和模数(私有密钥所需的全部)的一种方法:

    KeyFactory keyFactory = KeyFactory.getInstance("RSA");

    RSAPrivateKeySpec privateKeySpec = new RSAPrivateKeySpec(
            new BigInteger("57791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb1", 16),
            new BigInteger("57791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb1", 16)
    );

    RSAPrivateKey privateKey = (RSAPrivateKey) keyFactory.generatePrivate(privateKeySpec);

07-24 18:39