2017-10-12 5 views
0

Wenn Sie den folgenden Code ausführen:BadPaddingException Laden p12 Schlüsselspeicher

KeyStore ks = KeyStore.getInstance(storeType); 
    ks.load(new FileInputStream(keyStore), storePassword.toCharArray()); 

    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 
    kmf.init(ks, keyPassword.toCharArray()); 

Ich erhalte eine Ausnahme:

java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded. Such issues can arise if a bad key is used during decryption. 
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption. 

Dies war ursprünglich von einem JKS Schlüsselspeicher in einem PKCS12-Schlüsselspeicher umgewandelt unter Verwendung von keytool. Ich habe versucht, einen neuen, frischen PKCS12-Keystore zu erstellen, aber kein Glück.

Antwort

0

JKS unterstützt die Verwendung von zwei Passwörtern, eines für den Speicher und eines für den Schlüssel im Inneren. PKCS12 nicht. Wenn Sie das Keytool benutzen, erhalten Sie eine Warnung darüber.

Bei der Migration vom neuen Keystore wird der Code wahrscheinlich das alte Schlüsselpasswort verwenden, das in diesem Fall nicht identisch ist.

Java 9 gibt eine viel bessere Ausnahmebedingung um diese Anzeige, die darauf hindeutet, dass es während der Entschlüsselung aus einem ungültigen Schlüssel entstehen könnte.

Stellen Sie in diesem Fall sicher, dass Sie ein Schlüsselpasswort übergeben, das mit dem Speicherkennwort übereinstimmt.

Verwandte Themen