Given a javax.crypto.Cipher object, how do I obtain key length to use with its init method?
I do know that object is created with Cipher.getInstance("AES/CBC/PKCS5Padding"), but I'd like to abstract from that.
Right now my code looks like:
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(keyString.toCharArray(), SALT, 256, 128);
byte[] encoded = factory.generateSecret(spec).getEncoded();
assert encoded.length*8 == 128;
Key rv = new SecretKeySpec(encoded, "AES");
Cipher cipher = Cipher.getInstance(CIPHER_MODE);
cipher.init(Cipher.DECRYPT_MODE, rv, new IvParameterSpec(IV_PARAMETER_SPEC));
I'd like replace cipher object with a parameter and "128", "AES" constant values to be derived from cipher object.