开发者

AES encryption: InvalidKeyException: Key length not 128/192/256 bits

开发者 https://www.devze.com 2023-01-30 04:31 出处:网络
I\'m trying to encrypt a string on Android with AES. The symmetric key is determined previously with the Diffie-Hellman algorithm and seems to be ok (Key Length is 128 Bit, see below).

I'm trying to encrypt a string on Android with AES. The symmetric key is determined previously with the Diffie-Hellman algorithm and seems to be ok (Key Length is 128 Bit, see below).

Nevertheless, I get a InvalidKeyException: "Key length not 128/192/256 bits."

Code:

KeyAgreement keyAgree = KeyAgreement.getInstance("DH", "BC");
keyAgree.init(this.smartphonePrivKey);
keyAgree.doPhase(serverPubKey, true);
SecretKey key = keyAgree.generateSecret("AES");
System.out.println("Key Length: " + key.getEncoded().length);
System.out.println("Key Algor开发者_运维知识库ithm: "+ key.getAlgorithm());
System.out.println("Key Format: "+ key.getFormat());

byte[] encrypted = null;
  Cipher cipher;
  try {
   cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
   System.out.println("Allowed Key Length: "
     + cipher.getMaxAllowedKeyLength("AES"));
   cipher.init(Cipher.ENCRYPT_MODE, key);
   encrypted = cipher.doFinal("YEAH".getBytes("UTF8"));
  } catch (NoSuchAlgorithmException e) {
   e.printStackTrace();
  } catch (NoSuchPaddingException e) {
   e.printStackTrace();
  } catch (InvalidKeyException e) {
   e.printStackTrace();
  } catch (IllegalBlockSizeException e) {
   e.printStackTrace();
  } catch (BadPaddingException e) {
   e.printStackTrace();
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  }

The above Code leads to the following output:

_12-10 20:24:53.119: INFO/System.out(757): Key Length: 128_  
_12-10 20:24:53.119: INFO/System.out(757): Key Algorithm: AES_   
_12-10 20:24:53.119: INFO/System.out(757): Key Format: RAW_  
_12-10 20:24:53.470: INFO/System.out(757): Allowed Key Length: 2147483647_ 

After that, I get the InvalidKeyException: Key length not 128/192/256 bits. But as you can see, the SecretKey has a length of 128 Bits!

Any ideas?


The key you generated is 128 bytes, not 128 bits. "Key Length" should be 16.


This exception basically occur due to length of key that you hava passed for encryption.If you are using AES encryption then the number of characters must be in length of 128/192/256 bits. For example you can use the key of 16 character,24 character or 32 character.

String encrypted_data=AES.encrypt("HELLO","ASDFGHJKLASDFGHJ");

Hope this help...

0

精彩评论

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