Загрузите файл PDF, зашифрованный паролем, используя AndroidPdfViewer и AES от jblough.

Я использую библиотеку AndroidPDFViewer из https://github.com/jblough/Android-Pdf-Viewer-Library, которую я реализовал как библиотеку для Android версии 4.03. Все остальные файлы работают нормально, у меня проблема только при попытке прочитать зашифрованный паролем файл с известным паролем и с использованием шифрования AES с длиной ключа 128 бит. Я даже попытался жестко закодировать пароль и проследить его до StandardDecrypter.java, что дает мне недопустимое исключение аргумента в md5.update в этом цикле

    if (revision >= 3) {
        for (int i = 0; i < 50; ++i) {
            md5.update(hash, 0, key.length);
            digestTo(md5, hash);    
        }
    }

Что мне не хватает?


person Badmash    schedule 08.07.2013    source источник


Ответы (1)


Ошибка связана с тем, что key.length возвращает значение 128. Оно должно быть 16, потому что ключ AES 128 имеет длину 16 байт. Я изменил это значение.

     final int keyLen =revision == 2 ? 5 : (keyBitLength / 8);

to

     final int keyLen =16;

он будет работать только для AES 128

person Samson Nzuki    schedule 16.07.2013