У меня есть .p12 файл, я извлекаю закрытый ключ с помощью openssl, у меня есть пароль для его извлечения.Извлечение частного ключа из pkcs12 и текстовое шифрование
openssl pkcs12 -in my.p12 -nocerts -out privateKey.pem
И после того, как я получу свой секретный ключ, я пытаюсь использовать этот ключ для шифрования:
public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
KeyPair keyPair = readKeyPair(privateKey, "testpassword".toCharArray());
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
byte[] textEncrypted = cipher.doFinal("hello world".getBytes());
System.out.println("encrypted: "+new String(textEncrypted));
cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
byte[] textDecrypted = cipher.doFinal(textEncrypted);
System.out.println("decrypted: "+new String(textDecrypted));
}
private static KeyPair readKeyPair(File privateKey, char[] keyPassword) throws IOException {
FileReader fileReader = new FileReader(privateKey);
PEMReader r = new PEMReader(fileReader, new DefaultPasswordFinder(keyPassword));
try {
return (KeyPair) r.readObject(); // this returns null
} catch (IOException ex) {
throw new IOException("The private key could not be decrypted", ex);
} finally {
r.close();
fileReader.close();
}
}
r.readObject(); возврат null. Но когда я сам создаю секретный ключ по этой команде:
openssl genrsa -out privkey.pem 2048
Приведенный выше код работает нормально.
- Как я могу извлечь закрытый ключ из файла p12 правильно?
- Или есть ли способ использовать файл p12 для шифрования/дешифрования текста без извлечения из командной строки?
Я знаю, что это просто PKCS#12 - это просто архивный файл, в котором хранятся ключи.
Hi Rob благодарит вас за ответ. Раньше я пробовал. у моего хранилища ключей нет каких-либо псевдонимов. есть ли способ выяснить путь. У меня есть сертификат вместе с файлом p12. . – user2662294
Добавлены некоторые подробности о включении содержимого хранилища ключей, так что, возможно, вы можете найти псевдоним, который находится на входе, что вы заинтересованы в – Rob
Он показывает мне это: 'типа хранилища ключей: PKCS12 поставщика хранилища ключей: SunJSSE Ваших keystore содержит 0 записей', BTW, у меня есть * .cer, файл вместе с моим файлом .p12. что-то с этим связано? Благодаря! – user2662294