Получение хэшированного пароля из StandardProtectionPolicy перед сохранением файла - с использованием Apache PDFBox - PullRequest
0 голосов
/ 25 октября 2018

Я работаю над программой для подбора PDF-файлов.

Теперь я не могу прочитать хешированный пароль владельца перед сохранением PDDocument.Проблема заключается в том, что намного медленнее сохранять файл снова и снова и снова, а затем просто считывать хешированный пароль из StandardProtectionPolicy.

Вот мой код, с которым я работаю.

//creating new Document
PDDocument doc1 = new PDDocument();

//creating StandardProtectionPolicy
StandardProtectionPolicy spp = new StandardProtectionPolicy("somepassword", "", new AccessPermission());
spp.setEncryptionKeyLength(128);

//setting the StandardProtectPolicy 
doc1.protect(spp);
doc1.save("C:\\Users\\user\\Desktop\\filename.pdf");

//reading out the hash
String hash = new String(doc1.getEncryption().getOwnerKey());

//closing the PDDocument
doc1.close();

Итак, мой вопрос, могу ли я считать хеш без сохранения или даже создания PDDocument.Если я просто не сохраню документ, он не будет работать.

Спасибо за вашу помощь.

Лука

1 Ответ

0 голосов
/ 26 октября 2018

У меня есть решение.Так что для других людей, которые хотят это знать:

                    PDDocument doc1 = new PDDocument();
                    StandardProtectionPolicy spp = new StandardProtectionPolicy(String.valueOf(i), "", new AccessPermission());
                    spp.setEncryptionKeyLength(128);
                    doc1.protect(spp);

больше не нужно экономить

                    //doc1.save("C:\\Users\\user\\Desktop\\working.pdf");

                    StandardSecurityHandler sh = new StandardSecurityHandler(spp);
                    sh.prepareDocumentForEncryption(doc1);

                    hash = new String(doc1.getEncryption().getOwnerKey());
...