2016-12-12 8 views
1

Привет Я использую Robolectric для тестовых случаев. Я столкнулся с некоторыми проблемами во время моделирования для шифрования связанных тестов. Я пытался использовать шифр с AES для шифрования. И это дает мне некоторую ошибку. Я попробовал его в следующем порядке:Проблема с Robolectric с шифрованием в приложении для Android

@Test 
public void testGet() { 
    Cipher cipher = null; 
    try { 
     SecretKey sks= getKeySpec(pass, salt); 
     cipher = Cipher.getInstance("AES"); 
     cipher.init(Cipher.DECRYPT_MODE, sks); 
    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } catch (NoSuchPaddingException e) { 
     e.printStackTrace(); 
    } catch (InvalidKeySpecException e) { 
     e.printStackTrace(); 
    } catch (InvalidKeyException e) { 
     e.printStackTrace(); 
    } 
} 

public SecretKey getKeySpec(char[] pass, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException { 

    //generate key spec... 
    return secretKeyFactory.generateSecret(keySpec); 
} 

Это дает мне следующую ошибку:

Illegal key size or default parameters 

Я уже добавляемые JCE за незаконное исключение размера. Он работает, если я запускаю его на устройстве и правильно работаю в своем приложении. Только когда я пытаюсь с robolectric, он дает мне эту ошибку. Нужна помощь. Спасибо.

+0

Hi Nilkash. Вы решили эту проблему? – ChaturaM

ответ

0

Причина этого в том, что Robolectric работает на JVM. JVM поддерживает только 128-битное шифрование ключей. Поэтому, если вы используете шифрование с 256-битным ключом, вам необходимо использовать расширение Java Cryptography Extension (JCE). follow this answer как это сделать