嗨,我正在使用 Robolectric 进行测试用例。在模拟与加密相关的测试用例时,我遇到了一些问题。我尝试使用带有 AES 的密码进行加密。它给了我一些错误。我以以下方式尝试过:
@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 时,它才会给我这个错误。需要一些帮助。谢谢你。