2016-12-12 6 views
1

こんにちは私はRobolectricをテストケースに使用しています。私は暗号化関連のテストケースをシミュレートしながらいくつかの問題に直面しています。暗号化のためにAESで暗号を使用しようとしました。そして、それは私にいくつかのエラーを与えています。私は、次のようにそれを試してみました:アンドロイドアプリケーションでの暗号付きRobolectricの問題

​​3210

は、私はすでに違法なサイズの例外のJCEを追加しました:

@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); 
} 

それは私に、次のエラーが発生します。私がデバイス上で実行し、私のアプリケーションで適切に作業している場合、それは動作しています。 robolectricで試してみると、私にはこのエラーが出てきます。何か助けが必要です。ありがとうございました。

+0

こんにちはニルカシュ。あなたはこの問題を解決しましたか? – ChaturaM

答えて

0

これは、RobolectricがJVMで動作する理由です。 JVMは最大128ビットの暗号化のみをサポートします。したがって、256ビットの鍵暗号化を使用している場合は、Java Cryptography Extension(JCE)を使用する必要があります。 follow this answer toその方法

関連する問題