0

Android バージョン 4.03 でライブラリとして実装したhttps://github.com/jblough/Android-Pdf-Viewer-Libraryの AndroidPDFViewer ライブラリを使用しています。他のすべてのファイルは問題なく動作します。パスワードで暗号化されたファイルを既知のパスワードで読み取ろうとして、128 ビットのキー長で AES 暗号化を使用しようとして問題が発生しただけです。パスワードをハードコーディングして、それを StandardDecrypter.java までたどってみました。これにより、このループの md5.update で不正な引数の例外が発生します

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

私は何が欠けていますか?

4

1 に答える 1

1

エラーは、key.length が 128 の値を返すためです。AES 128 キーの長さは 16 バイトであるため、16 である必要があります。この値を変更しました。

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

     final int keyLen =16;

AES 128でのみ機能します

于 2013-07-16T13:18:49.003 に答える