Description
Since bouncy castle version 1.80 the encryption and decryption for Ciphers like PBEWITHSHA256AND256BITAES-CBC-BC fail in our setup.
Example to reproduce the issue with Jasypt ( http://www.jasypt.org/bouncy-castle.html ) in Java:
StandardPBEStringEncryptor stringEncryptor = new StandardPBEStringEncryptor();
stringEncryptor.setAlgorithm("PBEWITHSHA256AND256BITAES-CBC-BC");
stringEncryptor.setPassword(“secretPassword”);
stringEncryptor.setProvider(new BouncyCastleProvider());
String encryptedText = stringEncryptor.encrypt("plainText");
The underlying exception is: java.security.InvalidAlgorithmParameterException: IV must be 16 bytes long
We use Java 21, Jasypt 1.9.3 and org.bouncycastle:bcprov-jdk18on 1.80. Everything worked fine with bouncy castle 1.79, the error occurs since the 1.80 update.
It seems the issue is related to the IvGenerator. By default, a NoIvGenerator
is added by Jasypt, if not specified differently.
If in the above code example you add a RandomIvGenerator
, encrpytion and decryption work fine again.
But: We can not just switch to using a RandomIvGenerator, because we have stored the encrypted strings in a database and these can not be correctly decrpyted with a different IvGenerator than the NoIvGenerator used for encryption.
Why did the behaviour change and for the same algorithm there are now new requirements for the IvGenerator? Could this be fixed? Thanks!