AES-Verschlüsselung: InvalidKeyException: Schlüssellänge nicht 128/192/256 bit
Ich versuche zu verschlüsseln, die eine Zeichenfolge auf einem Android-Gerät mit AES. Der symmetrische Schlüssel wird bestimmt vorher mit dem Diffie-Hellman-Algorithmus und scheint ok zu sein (mit einer Schlüssellänge von 128 Bit, siehe unten).
Trotzdem, ich bekomme eine 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 Algorithm: "+ 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();
}
Den obigen Code führt zu folgender Ausgabe:
_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_
Danach, bekomme ich die InvalidKeyException: Key length not 128/192/256 bits.
Aber wie Sie sehen können, wird der SecretKey hat eine Länge von 128 Bits!
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Schlüssel, den Sie erzeugt, ist 128 bytes, nicht 128 bits. "Key Length" sollte 16.
Diese Ausnahme grundsätzlich auftreten, aufgrund der Länge des Schlüssels, die Sie hava übergeben, die für die Verschlüsselung.Wenn Sie mit AES-Verschlüsselung, dann die Anzahl der Zeichen muss in der Länge von 128/192/256 bit.
Zum Beispiel können Sie den key mit 16 Zeichen,24 Zeichen oder 32 Zeichen.
Hoffe, dass dies helfen...