是否可以从私钥的byte []数组中恢复RSA公钥?

时间:2011-09-14 06:15:38

标签: java cryptography rsa

我想知道是否可以从私钥恢复RSA公钥?私钥加载如下:

PrivateKey privateKey = GnuRSAPrivateKey.valueOf(Utils.hexStringToBytes(prvKey));

如何从私有加载PublicKey? privateKey.getFormat返回null。

1 个答案:

答案 0 :(得分:2)

我假设您的GnuRSAPrivateKey来自the GNU Crypto project

GnuRSAPrivateKey实例包含私钥,其中包含一些额外的值,这些值不是实现RSA所必需的,但仍然受到性能的欢迎(使用中国剩余定理)和安全性(公共指数很有用)用于屏蔽,有助于防止定时攻击)。因此,此私钥还包含公钥。

所以这应该有效:

GnuRSAPrivateKey sk = GnuRSAPrivateKey.valueOf(theEncodedPrivateKey);
PrivateKey privateKey = sk;
PublicKey publicKey = new GnuRSAPublicKey(sk.getN(), sk.getE());