Я пишу код, который анализирует и анализирует PDF-файлы и в настоящее время работает над обработкой шифрования в документах.Я не могу понять из спецификации, как делается выбор между двумя возможными методами шифрования.Некоторые подробности из спецификации PDF ... Поле V
словаря шифрования поддерживает значения, в том числе:
1 = "Алгоритм 1: Шифрование данных с использованием алгоритмов RC4 или AES" в 7.6.2 «Общий алгоритм шифрования» с длиной ключа шифрования 40 битов;увидеть ниже.
2 = (PDF 1.4) «Алгоритм 1: Шифрование данных с использованием алгоритмов RC4 или AES» в 7.6.2, «Общий алгоритм шифрования», но допускающий длину ключа шифрования более 40 бит.
Поле Length
определяется как:
(Необязательно; PDF 1.4; только если V равно 2 или 3) Длина ключа шифрования, в битах.Значение должно быть кратным 8, в диапазоне от 40 до 128. Значение по умолчанию: 40.
И часть 7.6.2 Общий алгоритм шифрования перечисляет 2 возможности:
При шифровании данных в файле PDF следует использовать один из следующих алгоритмов:
• Собственный алгоритм шифрования, известный как RC4.[...]
• Алгоритм AES (Advanced Encryption Standard) (начиная с PDF 1.6).... и длина данных в зашифрованном виде округляется до кратного размера блока, который всегда равен 16 байтам ...
У меня есть образец документа с V =2, длина = 128, и это PDF 1.6.Я предполагал, что AES использовался для документов в PDF 1.6 и более поздних версиях, однако расшифровать его с помощью AES не удалось (не в последнюю очередь, так как потоки не кратны 128 битам).Дешифрование с помощью RC4 выполнено успешно.
Мой вопрос: как мой код может знать, как инициализировать дешифрование RC4 в начале обработки документа?Я не вижу ничего в словаре шифрования, в котором указано, какой метод использовался.