2016-10-04 2 views
1

Für AES-Schlüssel von 256 Bit zu erzeugen, i folgenden Code geschrieben:Wie 256 Bits erzeugen AES-Schlüssel

KeyGenerator keyGen; 

try { 
    keyGen = KeyGenerator.getInstance("AES"); 
    keyGen.init(256); 
    SecretKey secretKey = keyGen.generateKey(); 
    return secretKey;  
} 
catch (Exception e) { 
    e.printStackTrace(); 
    return null; 
} 

Meine Verschlüsselungsmethode ist:

private byte[] aes256Encode(SecretKey key, IvParameterSpec iv, String message) throws InvalidKeyException, 
     InvalidAlgorithmParameterException, 
     NoSuchAlgorithmException, NoSuchPaddingException, 
     IllegalBlockSizeException, BadPaddingException 
    { 
    Cipher cipher = Cipher.getInstance("AES/CFB/PKCS5Padding"); 
    cipher.init(Cipher.ENCRYPT_MODE, key, iv); 
    byte[] encrypted = cipher.doFinal(message.getBytes()); 
    return encrypted; 
    } 

und IV Generation Methode ist:

private IvParameterSpec generateAESIV() { 
    // build the initialization vector (randomly). 
    SecureRandom random = new SecureRandom(); 
    byte iv[] = new byte[16];//generate random 16 byte long 
    random.nextBytes(iv); 
    IvParameterSpec ivspec = new IvParameterSpec(iv); 
    return ivspec; 
    } 

Aber während der Verschlüsselung wirft es folgenden Fehler:

Exception in thread "main" java.security.InvalidKeyException: Illegal key size 
    at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039) 
    at javax.crypto.Cipher.implInit(Cipher.java:805) 
    at javax.crypto.Cipher.chooseProvider(Cipher.java:864) 
    at javax.crypto.Cipher.init(Cipher.java:1396) 
    at javax.crypto.Cipher.init(Cipher.java:1327) 

Kann jemand den Fehler aufzeigen, den ich hier mache?

+1

Wenn Sie das nächste Mal nach der Ausnahmebedingungsnachricht suchen, bevor Sie eine doppelte Frage stellen, ok? – Tom

+0

Danke @ Tom für den Vorschlag. Es hat für mich funktioniert! –

Antwort

1

Ändern Sie diese Zeile

keyGen.init(256);

Um

keyGen.init(128);

standardmäßig Java unterstützt nur 128-Bit-Verschlüsselung.

Edit: Wenn Sie Inhalte mit Schlüsseln verschlüsseln müssen größer als 128 Bit, Sie haben Java Cryptography Extension (JCE) zu verwenden.