I also had faced a similar issue. The root cause of this issue can vary for different cases.
If you want to decrypt a value which was not encoded properly as shown below.
byte encryptedBytes = Base64.decodeBase64(encryptedBase64String);
If your String is misconfigured for any reason or it is encoded wrongly then you may see the error as " Input length must be multiple of 16 when decrypting with padded cipher"
Another case if you are using the encoded string in any url and trying to pass it in the base64Encoded value in url then it will fail. To fix it you should do the URLEncoding and then you can pass in the token, it will surely work.
If you are integrating it with one of the vendors then in that case I found that I had to do the encryption of Base64 using the URLEncoder but after that I need not decode it as it was done internally by a Vendor