こんにちは、テストケースに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で試してみると、このエラーが発生します。助けが必要です。ありがとうございました。
回答:
回答№1は0この背後にある理由は、RobolectricがJVMで実行されることです。 JVMは、最大128ビットのキー暗号化のみをサポートします。したがって、256ビットキー暗号化を使用している場合は、Java Cryptography Extension(JCE)を使用する必要があります。 この答えに従ってください それを行う方法に