给定RSA的d
,e
和n
(假设为BigIntegers),如何创建java.security.interfaces.RSAPrivateKey实例。 (此处d
表示私有指数,e
表示公共指数,n=pq
表示RSA模数。)
我以为这真的很简单,但是我在文档或互联网上什么都找不到。
如果有帮助,我已经安装了BouncyCastle。
编辑来阐明:我正在寻找一个实现接口的类,并以d
,e
和/或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);