fournisseur bouncycastle ne peut pas trouver les classes nécessaires pour l'algorithme
Je suis en train d'utiliser bouncycastle pour crypter un fichier à l'aide d'une clé publique.
J'ai enregistré le fournisseur par programmation:
Security.addProvider(new BouncyCastleProvider());
J'ai créé la clé publique de l'objet avec succès.
quand j'arrive à chiffrer le fichier à l'aide d'un PGPEncryptedDataGenerator et la clé je reçois un ClassNotFound exception.
Il semble que le fournisseur ne pouvez pas trouver cette classe lors de l'exécution, bien que je sais pour sûr que j'ai son bocal...
Je suis en cours d'exécution de mon application sur tomcat.
À l'aide de maven pour gérer les dépendances - le château gonflable pots j'ai mis sont bcpg, bcprov, bcmail, bctsp.
J'ai essayé d'utiliser à la fois les 1.4 et 1.6 versions sans succès.
J'ai utilisé le terme de "dépendance de la hiérarchie" dans le plugin maven pour eclipse et les exclusions dans le pom pour s'assurer qu'il n'y a pas plusieurs versions de bouncycastle dans mon projet.
C'est la trace de la pile:
org.bouncycastle.openpgp.PGPException: exception encrypting session key
at org.bouncycastle.openpgp.PGPEncryptedDataGenerator.open(Unknown Source)
at org.bouncycastle.openpgp.PGPEncryptedDataGenerator.open(Unknown Source)
.....(web application stack trace and uninteresting stuff).....
Caused by: java.security.NoSuchAlgorithmException: No such algorithm: ElGamal/ECB/PKCS1Padding
at javax.crypto.Cipher.getInstance(DashoA13*..)
at org.bouncycastle.openpgp.PGPEncryptedDataGenerator$PubMethod.addSessionInfo(Unknown Source)
... 42 more
Caused by: java.security.NoSuchAlgorithmException: class configured for Cipher(provider: BC)cannot be found.
at java.security.Provider$Service.getImplClass(Provider.java:1268)
at java.security.Provider$Service.newInstance(Provider.java:1220)
... 44 more
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.JCEElGamalCipher$NoPadding
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at java.security.Provider$Service.getImplClass(Provider.java:1262)
source d'informationauteur Sam
Vous devez vous connecter pour publier un commentaire.
Vous avez un BouncyCastle de Sécurité fournisseur de problème d'installation, vous devez soit
$JAVA_HOME/jre/lib/security/java.security
fichier en tant que fournisseur (assurez-vous que vous l'ajouter à la JRE que vous utilisez lors de l'exécution, par exemple. si vous avez plusieurs JRE/JDK est installé)par exemple.
(et renuméroter les prestataires de services de sécurité ci-dessous - ne pas mettre comme priorité le plus élevé fournisseur).
$JAVA_HOME/jre/lib/security/java.policy
doit être "illimité" (vous pouvez probablement télécharger un nombre illimité de politique de fichier à partir de la page d'accueil de Java).Dans mon cas, il a bien fonctionné un temps, mais plus tard j'ai eu ClassNotFoundException lors de l'utilisation de la colombie-britannique. J'ai redémarré le serveur Tomcat et puis il a bien fonctionné.
Je pense que si vous redéployer l'application, comme vous le faites souvent, pendant le développement, il s'arrête de fonctionner. JNI est une autre chose qui souffre de ce problème.
Dans notre cas, ce n'est pas un problème. Nous n'avons jamais redéployer sur le test et les systèmes de production. Je préfère de livraison le pot avec l'app au lieu d'avoir à copier manuellement le contenant, lib.
Vous devez ajouter javapns.jar et bcprove-jdk15on-1.47.jar fichier dans votre dossier lib