Я предполагаю, что ваш GnuRSAPrivateKey
из проекта GNU Crypto .
A GnuRSAPrivateKey
содержит закрытый ключ с некоторыми дополнительными значениями, которые не нужны строго дляреализовать RSA, но все еще приветствуются с точки зрения производительности (с использованием китайской теоремы об остатках) и безопасности (открытый показатель полезен для маскировки, которая помогает против временных атак).Следовательно, этот закрытый ключ также содержит открытый ключ.
Так что это должно работать:
GnuRSAPrivateKey sk = GnuRSAPrivateKey.valueOf(theEncodedPrivateKey);
PrivateKey privateKey = sk;
PublicKey publicKey = new GnuRSAPublicKey(sk.getN(), sk.getE());