Как преобразовать RSA-кодированный ключ PKCS#8 в PKCS#1 в Java?
Можно ли преобразовать закрытый ключ RSA в формате PKCS#8 в PKCS#1? Я знаю, что это легко сделать с помощью openssl, но можно ли это сделать на Java?
2 ответа
Решение
Используйте BouncyCastle 1,50
PrivateKeyInfo pkInfo = PrivateKeyInfo.getInstance(pkPair.getPrivateKey().getEncodedKey());
ASN1Encodable privateKeyPKCS1ASN1Encodable = pkInfo.parsePrivateKey();
ASN1Primitive privateKeyPKCS1ASN1 = privateKeyPKCS1ASN1Encodable.toASN1Primitive();
byte[] privateKeyPKCS1 = privateKeyPKCS1ASN1.getEncoded();
Использование KeyFactory
с PKCS8EncodedKeySpec
(алгоритм "RSA"
) для преобразования байтов закрытого ключа в кодировке PKCS #8 в объекты Java.
использование Cipher
а также SecretKeyFactory
(алгоритм "PBEWithMD5AndDES"
) с PBEKeySpec
, а также PBEParameterSpec
чтобы создать PKCS #5 кодированный материал.