/ / Androidアプリケーションでの暗号を使用したRobolectricの問題-android、encryption、robolectric、sqlcipher-android

アンドロイド、暗号化、robolectric、sqlcipher-androidのアンドロイドアプリケーションで暗号を持つRobolectricの問題

こんにちは、テストケースに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)を使用する必要があります。 この答えに従ってください それを行う方法に