Плохое исключение заполнения - RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING в pkcs11
Мое приложение обращается к e-Token для расшифровки ответа от сервера
Ключ сеанса от сервера шифруется с использованием: -
RSA / ЕЦБ / OAEPWITHSHA-256ANDMGF1PADDING
Я использую провайдера SunPKCS11 для реализации доступа к криптографическому токену. Всякий раз, когда я пытаюсь расшифровать это, используя вышеупомянутый механизм, т.е.RSA / ЕЦБ / OAEPWITHSHA-256ANDMGF1PADDING я получаю :-
**javax.crypto.BadPaddingException: doFinal() failed
at sun.security.pkcs11.P11RSACipher.implDoFinal(P11RSACipher.java:328)
at sun.security.pkcs11.P11RSACipher.engineDoFinal(P11RSACipher.java:353)
at javax.crypto.Cipher.doFinal(DashoA13*..)
Вот мой код:
private static final String TRANSFORMATION = "RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING";
private static final String SECURITY_PROVIDER = "BC";
private static final String DIGEST_ALGORITHM = "SHA-256";
private static final String MASKING_FUNCTION = "MGF1";
Фрагмент кода, в котором появляется ошибка:
private byte[] decryptSecretKeyData(byte[] encryptedSecretKey, byte[] iv, PrivateKey privateKey) throws Exception {
try {
Cipher rsaCipher = Cipher.getInstance(TRANSFORMATION, SECURITY_PROVIDER);
System.out.println("Cipher block initialized"); - **Printed**
PSource pSrc = (new PSource.PSpecified(iv));
System.out.println("PSource inisitialized"); - **Printed**
rsaCipher.init(Cipher.DECRYPT_MODE, privateKey,
new OAEPParameterSpec(DIGEST_ALGORITHM, MASKING_FUNCTION,
MGF1ParameterSpec.SHA256, pSrc));
System.out.println("Here after cipher initilaization"); - **Not Printed***
return rsaCipher.doFinal(encryptedSecretKey);
} catch (GeneralSecurityException e) {
System.out.println("GeneralSecurityException is "+e.getMessage());
throw new Exception("Failed to decrypt AES secret key using RSA.", e);
}
}
Я застрял здесь и не могу расшифровать трансформацию OAEP.