Задать вопрос
mva
@mva
CEO, CTO, Lua/Gentoo/IPv6 Pioneer

Как получить RSAPublicKey из RSAPrivateKey в >=Android-4.3?

Здравствуйте!
У меня стоит задача из объекта типа RSAPrivateKey получить RSAPublicKey (или, говоря проще, "вытащить" публичный ключ из приватного).
До Android 4.3 у меня в приложении работал такой подход:
RSAPrivateCrtKey private_key = (RSAPrivateCrtKey) KeyFactory.getInstance("RSA")
.generatePrivate(new PKCS8EncodedKeySpec(encoded_byte_array));

PublicKey public_key = KeyFactory.getInstance("RSA")
.generatePublic(new RSAPublicKeySpec(private_key.getModulus(),
private_key.getPublicExponent()));


Подскажите, пожалуйста, как правильно это делать теперь?
  • Вопрос задан
  • 2518 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
kentilini
@kentilini
В продакшн
Они изменили API начиная с версии 4.2, на OpenSSL lib
Cryptography - Modified the default implementations of SecureRandom and Cipher.RSA to use OpenSSL. Added SSL Socket support for TLSv1.1 and TLSv1.2 using OpenSSL 1.0.1

Тут есть развернутое решение. В вашем случае код будет выглядеть так:
KeyFactory fact = KeyFactory.getInstance("RSA");
Key pubKey = fact.generatePublic(new RSAPublicKeySpec(m, e));


Где m и e - модуль и экспонента соответственно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы