¿AES / CBC realmente requiere el parámetro IV?

Estoy escribiendo una aplicación sencilla para cifrar mi mensaje usando AES / CBC (modo). Como entiendo, el modo CBC requiere el parámetro IV, pero no sé por qué mi código funciona sin el parámetro IV utilizado. Cualquiera puede explicar por qué? Gracias.

El mensaje cifrado se imprimió: T9KdWxVZ5xStaisXn6llfg == sin excepción.

public class TestAES {

public static void main(String[] args) {

    try {
        byte[] salt = new byte[8];
        new SecureRandom().nextBytes(salt);

        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
        KeySpec keySpec = new PBEKeySpec("myPassword".toCharArray(), salt, 100, 128);

        SecretKey tmp = keyFactory.generateSecret(keySpec);
        SecretKeySpec key = new SecretKeySpec(tmp.getEncoded(), "AES");

        Cipher enCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        enCipher.init(Cipher.ENCRYPT_MODE, key);

        // enCipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));

        byte[] cipherBytes = enCipher.doFinal("myMessage".getBytes());
        String cipherMsg = BaseEncoding.base64().encode(cipherBytes);

        System.out.println("Encrypted message: " + cipherMsg);

    } catch (Exception ex) {
        ex.printStackTrace();
    }

}
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta