2016-07-05 21 views
0

私はbouncycastleを使用してpdfファイルを暗号化/復号化しようとすると、空のpdf(184Koサイズ)を与えます。 コードはテキストファイルと完全に一致します。しかし、PDFファイルはありません。 いずれかがJavaでPDFファイルを暗号化/復号化する方法を知っていますか?このライン暗号文= cipher.doFinal(入力)中:(RSAブロックのためにあまりにも多くのデータjava.lang.ArrayIndexOutOfBoundsException)私は暗号化に使用したコード怒鳴るPDF暗号化/復号化が動作しない

、私はPDFファイルを暗号化する際に が、私は例外を取得:

 Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); 

    byte[] input = acVote; 
    byte[] cipherText = null; 

    Cipher cipher = null; 

    try { 
    cipher = Cipher.getInstance("RSA/ECB/OAEPPadding", "BC"); 

    SecureRandom random = new SecureRandom(); 

    //do encryption 

    cipher.init(Cipher.ENCRYPT_MODE, pubKey, random); 

    cipherText = cipher.doFinal(input); 
    } catch (Exception ex) { 
     log.error("Exeption Message : " + ex); 
    } 

私は.txtファイルを暗号化し、それが動作する...

+0

**(A)**コードは表示されません。したがって、私たちはあなたが何を試みたのか分かりません。それでは、どのように間違いがあるのか​​わかりますか? **(B)**あなたはPDF暗号化について話します。 PDF仕様で言及されている暗号化アルゴリズムの1つを使用した暗号化を意味するので、標準のPDFビューアで解読できますか?あるいは、PDFにとらわれない暗号化を意味しますか? – mkl

+0

文字列暗号化としてのPDF暗号化... 私はこの仕事が.txtファイルだが、.pdfファイルではないと言っています... –

+0

PDFは文字列ではなく、文字データではなく、バイナリです。したがって、テキスト文字列用のコードを使用すると、PDFで失敗する可能性があります。 – mkl

答えて

0

私はちょうどあなたの理論を伝えることができますし、ここにある:

私はいくつかの時間前に画像を暗号化し、Iてきました画像を2048巨大なbに読み込んでyt配列。その後、2048バイトごとに1バイトのファイルに分割し(それは小さな画像だった)、その後、名前が違う20個のファイルがあり、それもかなりシンプルでしたが、良い暗号化でした。

2番目の方法は、あなたが2ヶ所を上下にすべてのバイトを移動(または2つ以上)という意味ではシーザー暗号(のようなもの)

ものは 私はかなり簡単ですが、時には便利暗号化されている:DDDDDDDDDDDDDDDここ

1

は何が必要です決定する:私は暗号化されたファイルをしたいのですか?暗号化されたPDFが必要ですか?この区別は重要です。暗号化されたファイルが必要な場合は、それがあなたのものです。考えられる原因には、PDFが頻繁に部分的にバイナリであることが含まれていますが、弾力のある城には違いはありませんが、データなどに使用しているリーダーの種類を知らせる場合があります。

暗号化されたPDFを取得しようとしている場合、これはあなたが本当に望むものと思われます。弾力のある城は(直接的に)あなたのためには行いません。

代わりに、iTextをベースにしたツールiText、またはPDFを消費して暗号化されたPDFを正しく書き出すことができる別の類似ライブラリ(JoltPdfなど)を使用する必要があります。暗号化されたPDFは、部分的に暗号化されたPDFファイルです。 string型およびstream型のPDF要素は、指定されたパスワード、指定された暗号化アルゴリズム、およびいくつかのsaltを使用して暗号化されます。さらに、暗号化アルゴリズムによっては、文書に署名が付く可能性があります。これは、最も一般的な署名プロセスに従わない独自のものです。

iTextとJoltPdfは、ハッシュ、暗号化、署名を行うためにバウンシーキャッスルを使用しています。