Java Открытие файла xslx, защищенного паролем, вызывает исключение EncryptedDocumentException

У меня есть файл xlsx из excel 2013 с защитой паролем. У меня есть пароль, и я пытался его расшифровать.

public static Boolean isWorkbookPasswordValid(File file, String xlsWorkGroupPassword) throws IOException, GeneralSecurityException {
    InputStream is = null;
    FileOutputStream fileOut = null;
    Workbook wb;
    try {
        wb = WorkbookFactory.create(new FileInputStream(file), xlsWorkGroupPassword);
    } catch (Exception e1) {
        // ...
    }
}

и запустив приведенный выше код, я получил эту ошибку:

org.apache.poi.EncryptedDocumentException: Export Restrictions in place - please install JCE Unlimited Strength Jurisdiction Policy files
    at org.apache.poi.poifs.crypt.CryptoFunctions.getCipher(CryptoFunctions.java:208)
    at org.apache.poi.poifs.crypt.CryptoFunctions.getCipher(CryptoFunctions.java:182)
    at org.apache.poi.poifs.crypt.agile.AgileDecryptor.hashInput(AgileDecryptor.java:269)
    at org.apache.poi.poifs.crypt.agile.AgileDecryptor.verifyPassword(AgileDecryptor.java:116)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:95)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:206)
    at 

Чтение онлайн:

поэтому я скачал JCE с здесь и скопировал его в каталог домашней безопасности Java.

и попытался запустить снова - и я получил ту же ошибку.

Я также попробовал этот код, и он дал мне такое же исключение.

POIFSFileSystem fs = new POIFSFileSystem(is);
EncryptionInfo info = new EncryptionInfo(fs);
Decryptor d = Decryptor.getInstance(info);
d.verifyPassword(xlsWorkGroupPassword)

добавление этого свойства также ничего не сделало:

Security.setProperty("crypto.policy", "unlimited");

насколько я понимаю, excel 2013 шифрует файл по этим параметрам:

keyBits="256",hashAlgorithm="SHA512" 

и проблема в keyBits. Кто-нибудь имел и решил эту проблему?


person Barak Kedem    schedule 03.11.2016    source источник
comment
Просто загрузить JCE недостаточно, вы должны установить его в нужное место, чтобы он что-то изменил!   -  person Gagravarr    schedule 03.11.2016
comment
Я скопировал его в свой домашний каталог java и заменил существующие файлы. не изменил ошибку. C:\Program Files\Java\jre1.8.0_60\lib\security   -  person Barak Kedem    schedule 03.11.2016
comment
Вы должны установить файлы политики в используемую вами JRE. Лучше всего установить его в любой JDK и JRE, которые вы установили (32- и 64-битные версии).   -  person Robert    schedule 03.11.2016
comment
Пока отображается Исключение об ограничениях на экспорт, JCE установлен неправильно.   -  person centic    schedule 04.11.2016