2

PKCS11 メカニズム (CKM_RSA_PKCS および CKM_RSA_X_509) を使用して関数を実装しています。どちらも Botan C++ ライブラリに実装されていることは知っていますが、Java で同等のものを見つける必要があります。2番目の問題は、両者の違いは何ですか?

4

1 に答える 1

4

CKM_RSA_PKCSRSA暗号化およびデジタル署名に関するPKCS#1 v1.5標準(RFC3447を参照)を指します。Java JCEでは、通常、RSAのデフォルトの選択です。

  • デジタル署名の場合は、「MD5WithRSA」「SHA1WithRSA」などをSignature.getInstance()
  • 暗号化の場合は、「RSA / None/PKCS1Padding」をに渡しCipher.getInstance()ます。

CKM_RSA_X_509教科書(または生の)RSAアルゴリズム、つまり、パディングが定義されていないアルゴリズムを指します。この場合、「RSA / None/NoPadding」をに渡すだけCipher.getInstance()です。署名は復号化で実行でき、検証は暗号化で実行できます(比較が続きます)。

ただし、特定のユースケースを念頭に置いていない限り、生のRSAを実装して使用することは避けます。PKCS#1v1.5署名はより安全です。ただし、暗号化については、どちらも安全ではないため、実際にはどちらも使用することはお勧めしません。CKM_RSA_PKCS_OAEPPKCS#1 OAEP( );のみに依存することをお勧めします。そのためには、「RSA / None/OAEPWithSHA1AndMGF1Padding」をに渡しCipher.getInstance()ます。

于 2013-02-22T18:14:50.743 に答える