如何在给定RSA的d
,e
和n
(假设为BigIntegers)的情况下创建java.security.interfaces.RSAPrivateKey的实例。 (此处d
表示私有指数,e
表示公共指数,n=pq
表示RSA模数。)
我认为这很简单但我在文档或互联网上找不到任何东西。
如果有任何帮助,我已经安装了BouncyCastle。
编辑以澄清:我正在寻找一个实现该接口的类,并将d
,e
和/或n
作为参数构造函数(或工厂函数的参数等),而不是创建新的随机密钥或从某个PKCS *格式的文件中读取密钥。
答案 0 :(得分:3)
嗯,这里是你如何构建一个私有指数和模数(私钥所需的全部):
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPrivateKeySpec privateKeySpec = new RSAPrivateKeySpec(
new BigInteger("57791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb1", 16),
new BigInteger("57791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb157791d5430d593164082036ad8b29fb1", 16)
);
RSAPrivateKey privateKey = (RSAPrivateKey) keyFactory.generatePrivate(privateKeySpec);