password ivparameterspec example encrypt cipher cbc java encryption

ivparameterspec - JCE no puede autenticar al proveedor BC en la aplicación java swing



java encrypt password (5)

1. editar jre / lib / security / java.security

Añada security.provider.10 = org.bouncycastle.jce.provider.BouncyCastleProvider

2. copia bc * .jar a jre / lib / ext

Estoy creando una aplicación basada en swing en JAVA que utiliza alguna técnica de encriptación. Pero javax.crypto.KeyGenerator.getInstance ("AES", "BC") da excepción:

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

Entonces, ¿cuál es el problema?


FYI: en lugar de modificar java.security y copiar jar a / jre / lib / ext, a continuación los pasos resolvieron mi problema también.

  1. agregue Security.addProvider (new org.bouncycastle.jce.provider.BouncyCastleProvider ()) en su clase.
  2. agregue alcance provisto a la dependencia bcprov. *. jar en pom.xml.
  3. ponga bcprov. *. jar en su carpeta específica (p. ej .: / lib), luego remítalo cuando ejecute el proyecto.

Para ampliar el comentario de GregS, todos los JAR del proveedor de JCE deben estar firmados antes de que el tiempo de ejecución de Java les otorgue la confianza.

BouncyCastle suministra diligentemente JAR firmados que funcionarán sin problemas. Sin embargo, si extrae los archivos de clase de este JAR o recompila el origen, eliminará la firma y hará que Java rechace el código.

Consulte esta pregunta relacionada con SO: cómo firmar un proveedor de seguridad JCE personalizado


Para aquellos que encuentran este problema pero realmente usan SpongyCastle , puede ser interesante saber que en Android no existe una prueba de firma y para sus pruebas puede usar SpongyCastle a través de openJDK-8 ya que tampoco le importan las firmas.

Como referencia, con SpongyCastle el error dice:

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

Más información en este número


Para mí, el problema era que bcprov-ext-jdk16.jar estaba siendo descartado por el 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'' ..

Así que terminé usando bouncycastle.jar de -classpath como a continuación,

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

Lo que también funciona es poner el bouncycastle.jar en $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