Private генерации ключейПроблема в создании закрытого ключа
public PrivateKey getStoredPrivateKey(String filePath) {
PrivateKey privateKey = null;
byte[] keydata = getKeyData(filePath);
PKCS8EncodedKeySpec encodedPrivateKey = new PKCS8EncodedKeySpec(keydata);
KeyFactory keyFactory = null;
try {
keyFactory = KeyFactory.getInstance("RSA");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
try {
System.out.println("hello");
privateKey = keyFactory.generatePrivate(encodedPrivateKey);
} catch (InvalidKeySpecException e) {
e.printStackTrace();
}
return privateKey;
}
Я использую его здесь
PrivateKey privateKey = new KryptoUtil().getStoredPrivateKey(privateKeyFilePath);
но показывает ошибку
hello
java.security.spec.InvalidKeySpecException:
java.security.InvalidKeyException: IOException : version mismatch: (supported: 00, parsed: 03
at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(Unknown Source)
Я передаю (P12) в функции getStoredPrivateKey (String filePath).
Почему его значение дает ошибку?
Вы уверены, что ваш секретный ключ имеет спецификацию PKCS # 8. Попробуйте использовать другие спецификации, такие как RSAPrivateKeySpec –
, как я могу определить, что это не PKCS # 8 – Mudit