2016-12-12 15 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要怎麼做