开发者

Android Cipher problems. InvalidKeyException?

开发者 https://www.devze.com 2022-12-19 23:54 出处:网络
I\'m trying to create an application for Android that uses encryption to save user information and I cannot figure out what I\'m doing wrong. I\'m trying to create an instance of an AES cipher but the

I'm trying to create an application for Android that uses encryption to save user information and I cannot figure out what I'm doing wrong. I'm trying to create an instance of an AES cipher but the application keeps on throwing "InvalidKeyExceptions." Consider the following code:

public static final byte[] IV = new byte[]
{ 0x04, 0x08, 0x15, 0x16, 0x23, 0x42, 0x00, 0x00, 0x00, 0x00,0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
protected final IvParameterSpec params = new IvParameterSpec(IV);
protected Cipher myCipher;

public AESEncryptor(String passwd, InputStream source, String destinationFile)
{
    try
    {       开发者_开发问答    
        myCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        Log.d("System.out.println", "Block Size: "+myCipher.getBlockSize());
        myCipher.init(Cipher.ENCRYPT_MODE, AESEncryptor.generateSecretKeyFromPassword(passwd),params);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

I get this exception:

java.security.InvalidKeyException: initialisation vector must be the same length as block size..

The myCipher.init(...) line triggers this exception.

I understand what it's saying but according to myCipher.getBlockSize() the IV byte array should hold 16 bytes, and it does, but it doesn't work. I have also tried byte arrays of length 0-128, and nothing in that range works either.

Oh also, if I take this code, unaltered, and add it to a regular Java application, I get no errors. Compiling for Android seems to be causing this error.

Please help. Thanks, Ryan


Have you tried specifying explicitly the block size in your mode parameter?

Ex:

Cipher.getInstance("AES/CBC16/PKCS5Padding");

I noticed here that if you don't specify the block size then it is provider dependent.

0

精彩评论

暂无评论...
验证码 换一张
取 消