30

暗号化技術を使用する Java でスイングベースのアプリケーションを作成しています。しかし、 javax.crypto.KeyGenerator.getInstance("AES", "BC") は例外を与えます:

java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
        at javax.crypto.SunJCE_b.a(DashoA13*..)
        at javax.crypto.KeyGenerator.getInstance(DashoA13*..)

それで、問題は何ですか?

4

7 に答える 7

50
  1. 編集jre\lib\security\java.security
  2. 追加security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
  3. bc*.jarにコピーjre\lib\ext
于 2013-10-24T09:32:58.053 に答える
27

GregS からのコメントをさらに詳しく説明すると、すべての JCE プロバイダー JAR は、Java ランタイムによって信頼される前に署名する必要があります。

BouncyCastle は、問題なく動作する署名付き JAR を忠実に提供します。ただし、この JAR からクラス ファイルを抽出するか、ソースを再コンパイルすると、署名が削除され、Java でコードが拒否されます。

この関連する SO の質問を参照してください:カスタム JCE セキュリティ プロバイダに署名する方法

于 2012-12-05T15:24:32.493 に答える
3

この問題を見つけたが実際に を使用している人にとってSpongyCastleは、Android にはそのような署名テストがなく、テストには openJDK-8 を介して SpongyCastle を使用できることを知っておくと興味深いかもしれません。

参考までに、SpongyCastle ではエラーは次のように表示されます。

java.lang.SecurityException: JCE cannot authenticate the provider SC

この号の詳細情報

于 2016-06-10T03:43:14.463 に答える