2016-12-12 16 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); 
} 

它给了我以下错误:

​​3210

我已经添加JCE非法大小例外。如果我在设备上运行它并在我的应用程序中正常工作,它正在工作。只有当我尝试使用robolectric时,它会给我这个错误。需要一些帮助。谢谢。

+0

嗨Nilkash。你解决了这个问题吗? – ChaturaM

回答

0

这背后的原因是Robolectric在JVM上运行。 JVM仅支持最多128位密钥加密。因此,如果您使用的是256位密钥加密,则需要使用Java加密扩展(JCE)。 follow this answer要怎么做