次の方法で共有


System.Security.Cryptography.RSACryptoServiceProvider クラス

この記事では、この API のリファレンス ドキュメントに補足的な解説を提供します。

RSACryptoServiceProvider クラスは、RSAの既定の実装です。

RSACryptoServiceProviderでは、Microsoft Enhanced Cryptographic Provider がインストールされている場合、384 ビットから 16384 ビットまでのキー サイズが 8 ビットずつサポートされます。 Microsoft Base Cryptographic Provider がインストールされている場合、384 ビットから 512 ビットまでのキー サイズが 8 ビットずつサポートされます。

有効なキー サイズは、 RSACryptoServiceProvider インスタンスで使用される暗号化サービス プロバイダー (CSP) によって異なります。 Windows CSP では、Windows 8.1 より前のバージョンの Windows では 384 ~ 16384 ビットのキー サイズ、Windows 8.1 の場合はキー サイズが 512 ~ 16384 ビットになります。 詳細については、Windows ドキュメントの CryptGenKey 関数を参照してください。

Microsoft Cryptographic API (CAPI) との相互運用

アンマネージド CAPI の RSA 実装とは異なり、 RSACryptoServiceProvider クラスは、暗号化後と復号化前に、暗号化されたバイト配列の順序を逆にします。 既定では、 RSACryptoServiceProvider クラスによって暗号化されたデータは CAPI CryptDecrypt 関数で暗号化解除できず、CAPI CryptEncrypt メソッドによって暗号化されたデータは、 RSACryptoServiceProvider クラスで復号化できません。

API 間の相互運用時に逆順を補正しない場合、RSACryptoServiceProvider クラスは CryptographicException をスローします。

CAPI と相互運用するには、暗号化されたデータが別の API と相互運用する前に、暗号化されたバイトの順序を手動で逆にする必要があります。 Array.Reverse メソッドを呼び出すことで、マネージド バイト配列の順序を簡単に逆にすることができます。