2
我有.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只是存儲密鑰的古董文件。
嗨羅布謝謝你的回答。我之前嘗試過這種方式。我的密鑰庫沒有任何別名。有什麼辦法可以找出辦法。我有一個與p12文件一起的證書。 – user2662294
添加了一些關於列出密鑰庫內容的細節,因此也許您可以找到您感興趣的項目上的別名。 – Rob
它向我顯示了這個:'Keystore type:PKCS12 Keystore provider:SunJSSE Your keystore包含0條目,順便說一句,我有* .cer,文件以及我的.p12文件。有什麼關係嗎?謝謝! – user2662294