我想知道是否可以从私钥恢复RSA公钥?私钥加载如下:
PrivateKey privateKey = GnuRSAPrivateKey.valueOf(Utils.hexStringToBytes(prvKey));
如何从私有加载PublicKey? privateKey.getFormat返回null。
答案 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());