0

私は暗号化を扱ってきましたが、いくつかの問題があります。私はいつもこの例外を受け取ります。

java.io.IOException: データの復号化例外 - java.security.InvalidKeyException: org.bouncycastle.jce.provider.JDKPKCS12KeyStore.cryptData(Unknown Source) での不正な鍵サイズ (Unknown Source) org.bouncycastle.jce.provider.JDKPKCS12KeyStore.engineLoad(Unknown Source) )

google one を検索すると、JCE Unlimited Policy File が必要であることがわかります。ダウンロードすると、インストール手順には、含まれている両方の jar ファイルを JRE の /security/ フォルダーにコピーするだけでよいことが示されています。うまくいきません。マシンのすべてのディレクトリを検索して、他の Java インストールを見つけましたが、何も見つかりませんでした。ファイルが正しいことを再確認しました

いくつかの情報:

java -version レポート:
Java バージョン "1.6.0_26"
Java(TM) SE ランタイム環境 (ビルド 1.6.0_26-b03)
Java HotSpot(TM) クライアント VM (ビルド 20.1-b02、混合モード、共有)

apt-get install sun-java6 を使用してこの Java バージョンをインストールしました

これに関するアイデアはありますか?

4

1 に答える 1

0

私の問題の解決策は他の場所から来たので、ここで説明します。私が持っていたエラーの前に:

KeyStore ks = KeyStore.getInstance("pkcs12","BC");  
File cert = new File(certPath);     
FileInputStream fis = new FileInputStream(cert);        
ks.load(fis,certpassword.toCharArray());

そして今、私は持っています:

KeyStore.Builder builder = null;
ProtectionParameter paramet = new PasswordProtection(certpassword.toCharArray());
builder = KeyStore.Builder.newInstance("PKCS12", null, new File(certPath), paramet);
KeyStore ks = builder.getKeyStore();
File cert = new File(certPath);
FileInputStream fis = new FileInputStream(cert);        
ks.load(fis, certpassword.toCharArray());

このコードはおそらく完全には正しくありませんが、機能します。この理由については、私には手がかりがありません。証明書をロードする別の方法を試したところ、これが機能しました。

このソリューションが無制限のポリシー ファイルなしで機能するかどうかはテストしていません。

于 2012-05-07T21:52:37.753 に答える