Cifra Android lançando BadPaddingException, mas não em Java

Estou usando alguma criptografia básica no meu aplicativo, que está executando o Android v20 (4.4.4)

Isso costumava funcionar, mas acho que com a versão mais recente do Android que estou executando, agora há um erro ao lançar a seguinte exceção:

10-28 12:42:02.312    5173-5332/com.app W/System.err﹕ javax.crypto.BadPaddingException: pad block corrupted
10-28 12:42:02.312    5173-5332/com.app W/System.err﹕ at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(BaseBlockCipher.java:739)
10-28 12:42:02.322    5173-5332/com.app W/System.err﹕ at javax.crypto.Cipher.doFinal(Cipher.java:1204)
10-28 12:42:02.322    5173-5332/com.app W/System.err﹕ at com.app.utils.CryptoClass.decrypt(CryptoClass.java:47)
10-28 12:42:02.322    5173-5332/com.app W/System.err﹕ at com.app.utils.CryptoClass.decrypt(CryptoClass.java:30)

O método que está lançando isso está aqui:

private static byte[] decrypt(byte[] rawKey, byte[] encrypted) throws Exception {
    SecretKeySpec spec = new SecretKeySpec(rawKey, "AES");
    Cipher cipher = Cipher.getInstance("AES");

    cipher.init(Cipher.DECRYPT_MODE, spec);

    return cipher.doFinal(encrypted); //THIS LINE THROWS EXCEPTION
}

Quando executo o mesmo código que um projeto Java, ele funciona corretamente (usando a mesma versão do Java, 1.7 que o Android está usando).

Eu tentei várias combinações para o parâmetro getInstance com base no que encontrei on-line, comoAES/CBC/PKCS5PADDING mas isso não resolve o problema.

O método getRawKey que estou usando:

private static byte[] getRawKey(byte[] bytes) throws Exception {
    KeyGenerator keygen = KeyGenerator.getInstance("AES");
    SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG", "SECRET");

    secureRandom.setSeed(bytes);
    keygen.init(128, secureRandom);

    SecretKey secretKey = keygen.generateKey();
    return secretKey.getEncoded();
}

Qualquer ajuda apreciada, obrigado.

questionAnswers(1)

yourAnswerToTheQuestion