JCE ne peut pas authentifier le fournisseur BC dans l'application java swing

je crée une application basée sur le swing en JAVA qui utilise une technique de cryptage. Mais javax.cryptographique.KeyGenerator.getInstance ("AES"," BC") donne exception:

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

alors quel est le problème?

26
demandé sur user1041858 2012-12-05 14:53:23

5 réponses

pour développer le commentaire de GregS, tous les jar fournisseurs JCE doivent être signés avant qu'ils ne soient fiables par votre Java runtime.

BouncyCastle fournit consciencieusement des jarres signées qui fonctionneront sans problème. Cependant, si vous extrayez des fichiers de classe à partir de ce JAR, ou si vous recompilez la source, cela supprimera la signature et fera rejeter le code par Java.

voir cette question ainsi liée: comment signer un fournisseur de sécurité JcE personnalisé

26
répondu Duncan Jones 2017-05-23 12:10:26

1. modifier jre\lib\security\java.sécurité

ajouter sécurité.Fournisseur.10 = org.bouncycastle.JCE.Fournisseur.BouncyCastleProvider

2. copie colombie-britannique*.pot de jre\lib\ext

31
répondu jiangzx 2013-10-24 09:32:58

pour ceux qui trouvent ce problème , mais en fait en utilisant SpongyCastle , il pourrait être intéressant de savoir que sur Android il n'y a pas un tel test de signature et pour vos tests, vous pouvez utiliser SpongyCastle via l'openJDK-8 que cela ne se soucie pas des signatures ni.

pour référence, avec SpongyCastle l'erreur se lit:

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

Plus d'informations dans cette question

4
répondu Giszmo 2017-01-15 23:31:46

pour moi, le numéro était bcprov-ext-jdk16.jar était rejeté par sbt assembly .

[warn] Merging 'META-INF/license/LICENSE.bouncycastle.txt' with strategy 'discard'
..
[warn] Merging 'META-INF/maven/org.jasypt/jasypt/pom.properties' with strategy 'discard'
[warn] Merging 'META-INF/maven/org.jasypt/jasypt/pom.xml' with strategy 'discard'
..

donc j'ai fini par utiliser le bouncycastle.jar de -classpath comme ci-dessous,

java -Denvironment=dev -cp chat-server.jar:/Users/prayagupd/.ivy2/cache/org.bouncycastle/bcprov-ext-jdk16/jars/bcprov-ext-jdk16-1.46.jar com.chat.server.ChatServer

ce qui fonctionne aussi c'est de mettre le bouncycastle.jar à $JAVA_HOME/jre/lib/ext ,

cp /Users/prayagupd/.ivy2/cache/org.bouncycastle/bcprov-ext-jdk16/jars/bcprov-ext-jdk16-1.46.jar $JAVA_HOME/jre/lib/ext/

$ ls -l $JAVA_HOME/jre/lib/ext/
total 55208
-rw-r--r--  1 root  wheel   1887089 May  7 21:22 bcprov-ext-jdk16-1.46.jar
-rw-rw-r--  1 root  wheel   3860502 Sep  5  2017 cldrdata.jar
-rw-rw-r--  1 root  wheel      8286 Sep  5  2017 dnsns.jar
-rw-rw-r--  1 root  wheel     44516 Sep  5  2017 jaccess.jar
-rwxrwxr-x  1 root  wheel  18610276 Sep  5  2017 jfxrt.jar
-rw-rw-r--  1 root  wheel   1179093 Sep  5  2017 localedata.jar
-rw-rw-r--  1 root  wheel      1269 Sep  5  2017 meta-index
-rw-rw-r--  1 root  wheel   2022735 Sep  5  2017 nashorn.jar
-rw-rw-r--  1 root  wheel     41672 Sep  5  2017 sunec.jar
-rw-rw-r--  1 root  wheel    274148 Sep  5  2017 sunjce_provider.jar
-rw-rw-r--  1 root  wheel    248726 Sep  5  2017 sunpkcs11.jar
-rw-rw-r--  1 root  wheel     68924 Sep  5  2017 zipfs.jar
0
répondu prayagupd 2018-05-08 05:26:18

FYI: au lieu de modifier java.sécurité et copie jar à \jre\lib\ext, ci-dessous les étapes ont résolu mon problème aussi bien.

  1. ajouter une garantie.addProvider (new org.bouncycastle.JCE.Fournisseur.BouncyCastleProvider ()) dans votre classe.
  2. ajouter a permis à bcprov.*.dépendance jar dans pom.XML.
  3. mettre bcprov.*.jar to your specific folder(E. g: \lib), puis le renvoyer lors de l'exécution du projet.
0
répondu imsimm 2018-06-13 02:27:01