Quelle est la différence de l'aide des touches de la Colombie-Britannique ou par défaut?
Question
Les deux lignes de code:
KeyPairGenerator.getInstance("RSA")
KeyPairGenerator.getInstance("RSA", "BC")
fonctionne bien. Alors, quel est le differecente en utilisant BC ou non?
est BC complètement compatible avec le RSA par défaut utilisé? (En utilisant soleil JDK 6)
La solution
BouncyCastle FAQ il y a des entrées liées à les détails de mise en œuvre du RSA.
J'ai personnellement pas trouvé quoi que ce soit écrit sur les fournisseurs Sun et la Colombie-Britannique sont incompatibles, et je suggère d'utiliser natif implémentation de RSA Java si la dépendance BouncyCastle pourrait être complètement abandonné par cela. Vous devez ajouter des dépendances externes que s'il y a un avantage bien défini de cela.
Si vous utilisez la bibliothèque de la Colombie-Britannique ailleurs dans votre projet, je suppose que cela n'a pas d'importance que le fournisseur à utiliser.
EDIT
J2ME ne comprend pas la mise en œuvre RSA. Donc, si vous envisagez de porter votre application pour J2ME parfois, bibliothèque BouncyCastle est la bonne façon d'aller maintenant.
Autres conseils
De Javadoc du premier constructeur :
Retourne un objet qui
KeyPairGenerator
génère des paires de clés publiques / privées pour l'algorithme spécifié.Cette méthode parcourt la liste des Les fournisseurs de sécurité enregistrés, en commençant par le plus préféré Fournisseur. Une nouvelle KeyPairGenerator objet encapsulant le la mise en œuvre KeyPairGeneratorSpi à partir du premier fournisseur qui supports l'algorithme spécifié est renvoyé .
Notez que la liste des enregistrés les fournisseurs peuvent être récupérés via le méthode
Security.getProviders()
.
Le Javadoc lié de Security.getProviders()
à son tour, indique ce qui suit:
Retourne un tableau contenant tous les fournisseurs installés. L'ordre des fournisseurs dans le tableau est leur ordre de préférence.
Eh bien, apparemment BC est dans votre cas « par hasard » le premier fournisseur préféré. S'il y a Incertitude autour (à savoir que vous voulez distribuer l'application et vous avez aucun contrôle sur l'environnement utilisateur final) et que vous souhaitez laisser coller à utiliser BC, alors vous devriez préférez utiliser le deuxième constructeur.
« BC » retourne la mise en œuvre BouncyCastle de l'algorithme de chiffrement.
Si vous ne spécifiez pas le fournisseur, il retournera le « plus prefferred » la mise en oeuvre de l'algorithme de chiffrement à savoir la providor en position 1 est le plus PRÉFÉRÉ dans le tableau des fournisseurs.