Ошибка AES BouncyCastle при обновлении до 1.45

Недавно обновлен с BC 1.34 до 1.45. Я декодирую некоторые ранее закодированные данные следующим образом:

    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec);
    byte[] decrypted = cipher.doFinal(encrypted);

При использовании BC 1.45 я получаю следующее исключение:

javax.crypto.BadPaddingException: pad block corrupted
 at org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(JCEBlockCipher.java:715)
 at javax.crypto.Cipher.doFinal(Cipher.java:1090)

EDIT: Подробнее об этой проблеме. Я использую следующее для генерации сырых ключей из парольной фразы:

    KeyGenerator kgen = KeyGenerator.getInstance("AES", "BC");
    SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");
    sr.setSeed(seed);
    kgen.init(128, sr);
    SecretKey skey = kgen.generateKey();
    byte[] raw = skey.getEncoded();

Я обнаружил, что это приводит к двум различным значениям для BC 1,34 и 1,45.

Это также может не быть связано с BouncyCastle (я тестирую на Android 2.3)

6
задан skaffman 9 May 2011 в 14:56
поделиться