2013-02-21 3 views
2

Je mets en œuvre des fonctions avec les mécanismes PKCS11 - CKM_RSA_PKCS et CKM_RSA_X_509. Je sais que les deux sont implémentés dans la bibliothèque Botan C++, mais je dois trouver des équivalents en Java. Le deuxième problème est quelle est la différence entre les deux?PKCS11 Différence de mécanismes + JAVA

Répondre

4

CKM_RSA_PKCS fait référence à la norme PKCS # 1 v1.5 (voir RFC3447) pour le chiffrement RSA et les signatures numériques. Dans Java JCE, il s'agit généralement du choix par défaut pour RSA.

  • Pour les signatures numériques, passer "MD5WithRSA", "SHA1WithRSA", etc à Signature.getInstance()
  • Pour le cryptage, passez "RSA/Aucune/PKCS1Padding" à Cipher.getInstance().

CKM_RSA_X_509 fait référence à l'algorithme RSA de manuels (ou brut), c'est-à-dire, celui où aucun bourrage n'est défini. Dans ce cas, vous pouvez simplement passer "RSA/None/NoPadding" à Cipher.getInstance(). La signature peut être faite avec le décryptage, où la vérification peut être faite avec le cryptage (suivi de la comparaison).

J'éviterais d'implémenter et d'utiliser du RSA brut, sauf si vous avez des cas d'utilisation spécifiques en tête. Les signatures PKCS # 1v 1.5 sont plus sécurisées. Pour chiffrer cependant, je ne recommanderais pas vraiment d'utiliser l'un ou l'autre, car ils sont tous deux non sécurisés. Il est préférable de ne compter que sur PKCS # 1 OAEP (CKM_RSA_PKCS_OAEP); pour cela, vous passez "RSA/None/OAEPWithSHA1AndMGF1Padding" à Cipher.getInstance().

+0

OK, merci beaucoup pour votre réponse. Bien sûr, cela fonctionne, mais aujourd'hui, je reconnais que je dois ajouter un remplissage avant de faire des opérations de chiffrement, c'est-à-dire du texte brut avec un remplissage supplémentaire. J'ai essayé de le google, mais tous les résultats que j'ai trouvés concernaient toutes les opérations de cryptage. –

+0

Ok, enfin je l'ai trouvé! Si ce serait utile pour quelqu'un - j'ai trouvé la classe java - classe RSAPadding qui pourrait être utilisée pour générer du texte matelassé à partir de plain. Le seul problème que j'ai trouvé est que pad de méthode (octet []) génère du texte rembourré avec 0 qui dans mon cas devrait être rogné. –

Questions connexes