Как разрешить исключение Invalid key в java?

Я пытаюсь зашифровать файл, и я использую следующее:

 public class AESFileEncryption {
    public static void main(String[] args) throws Exception {

        // file to be encrypted
        FileInputStream inFile = new FileInputStream("plainfile.txt");

        // encrypted file
        FileOutputStream outFile = new FileOutputStream("encryptedfile.des");

        // password to encrypt the file
        String password = "javapapers";

        // password, iv and salt should be transferred to the other end
        // in a secure manner

        // salt is used for encoding
        // writing it to a file
        // salt should be transferred to the recipient securely
        // for decryption
        byte[] salt = new byte[8];
        SecureRandom secureRandom = new SecureRandom();
        secureRandom.nextBytes(salt);
        FileOutputStream saltOutFile = new FileOutputStream("salt.enc");
        saltOutFile.write(salt);
        saltOutFile.close();

        SecretKeyFactory factory = SecretKeyFactory
                .getInstance("PBKDF2WithHmacSHA1");
        KeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt, 65536,
                256);
        SecretKey secretKey = factory.generateSecret(keySpec);
        SecretKey secret = new SecretKeySpec(secretKey.getEncoded(), "AES");

        //
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, secret);
        AlgorithmParameters params = cipher.getParameters();

        // iv adds randomness to the text and just makes the mechanism more
        // secure
        // used while initializing the cipher
        // file to store the iv
        FileOutputStream ivOutFile = new FileOutputStream("iv.enc");
        byte[] iv = params.getParameterSpec(IvParameterSpec.class).getIV();
        ivOutFile.write(iv);
        ivOutFile.close();

        //file encryption
        byte[] input = new byte[64];
        int bytesRead;

        while ((bytesRead = inFile.read(input)) != -1) {
            byte[] output = cipher.update(input, 0, bytesRead);
            if (output != null)
                outFile.write(output);
        }

        byte[] output = cipher.doFinal();
        if (output != null)
            outFile.write(output);

        inFile.close();
        outFile.flush();
        outFile.close();

        System.out.println("File Encrypted.");

    }

}

но я получаю следующую ошибку:

Исключение в потоке «основной» java.security.InvalidKeyException: недопустимый размер ключа или параметры по умолчанию

Может кто-нибудь помочь?


person user6601127    schedule 07.12.2016    source источник
comment
Возможный дубликат Java 256-битного шифрования AES на основе пароля   -  person Artjom B.    schedule 11.12.2016
comment
Вам нужны файлы политик неограниченной прочности.   -  person Artjom B.    schedule 11.12.2016