Мне нужно прочитать файлы ключей pem, чтобы получить открытый ключ RSA, а затем использовать их для шифрования.Я могу сделать это с помощью openssl и конвертировать файл pem в файл der.и затем загрузите мой ключ, используя X509EncodedKeySpec и PKCS8EncodedKeySpec.Но я не хочу этого делать, потому что pem - это формат обмена ключами пользователя.Пользователь может зарегистрировать свой собственный ключ, например:
--BEGIN PUBLIC KEY-- MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgGi0/vKrSIIQMOm4atiw+2s8tSojOKHsWJU3oPTm
b1a5UQIH7CM3NgtLvUF5DqhsP2jTqgYSsZSl+W2RtqCFTavZTWvmc0UsuK8tTzvnCXETsnpjeL13
Hul9JIpxZVej7b6KxgyxFAhuz2AGscvCXnepElkVh7oGOqkUKL7gZSD7AgMBAAE=
--END PUBLIC KEY--
и этот ключ хранится в базе данных в этом формате ...
Вот код, который я пробовал ..
File pubKeyFile=new File("D:/public_key.pem");
DataInputStream dis = new DataInputStream(new FileInputStream(pubKeyFile));
byte[] pubKeyBytes = new byte[(int)pubKeyFile.length()];
dis.readFully(pubKeyBytes);
dis.close();
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(pubKeyBytes);
RSAPublicKey pubKey = (RSAPublicKey) keyFactory.generatePublic(pubSpec);
Я получаю исключение как
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
Поскольку я совершенно не знаком с концепциями шифрования, кто-нибудь может помочь мне разрешить это исключение?
Большое спасибо.