Шифрование видеофайлов?

Я использую этот метод для шифрования видеофайла:

public static void encryptToBinaryFile(String password, byte[] bytes, File file) throws EncrypterException {
    try {
        final byte[] rawKey = getRawKey(password.getBytes());
        final FileOutputStream ostream = new FileOutputStream(file, false);

        ostream.write(encrypt(rawKey, bytes));
        ostream.flush();
        ostream.close();

    } catch (IOException e) {
        throw new EncrypterException(e);
    }
}

private static byte[] encrypt(byte[] raw, byte[] clear) throws EncrypterException {
    try {
       final SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
       final Cipher cipher = Cipher.getInstance("AES");
       cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

       return cipher.doFinal(clear);

    } catch (Exception e) {
        throw new EncrypterException(e);
    }
}

Но он выдает ошибку Outofmemoryerror, говорящую об отклонении выделения элемента 301023321.

1. Подходит ли метод, который я использую, для таких больших файлов?

2. Если да, то почему я получаю эту ошибку? Какое решение?

3. Если нет, пожалуйста, предложите какой-нибудь хороший метод для этого?

14
задан beryllium 20 January 2016 в 13:16
поделиться