本文提供了此 API 参考文档的补充说明。
该RSACryptoServiceProvider类是RSA的默认实现。
如果安装了Microsoft增强型加密提供程序,RSACryptoServiceProvider 支持的密钥大小范围为 384 位到 16384 位,并以8位为增量。 如果安装了 Microsoft 基本加密提供程序,则它支持的密钥大小在 384 位到 512 位之间,并以 8 位递增。
有效的密钥大小取决于实例使用的 RSACryptoServiceProvider 加密服务提供程序(CSP)。 Windows CSP 为 Windows 8.1 之前的 Windows 版本启用 384 到 16384 位的密钥大小,对于 Windows 8.1,密钥大小为 512 到 16384 位。 有关详细信息,请参阅 Windows 文档中的 CryptGenKey 函数。
与Microsoft加密 API(CAPI)的互作
与非托管 CAPI 中的 RSA 实现不同, RSACryptoServiceProvider 类在加密后和解密之前反转加密的字节数组的顺序。 默认情况下,由RSACryptoServiceProvider类加密的数据不能由CAPI CryptDecrypt
函数解密,且由CAPI CryptEncrypt
方法加密的数据不能由RSACryptoServiceProvider类解密。
如果在 API 之间互操作时不补偿反向排序,则 RSACryptoServiceProvider 类将引发一个 CryptographicException。
若要与 CAPI 互作,必须在加密数据与另一个 API 互作之前手动反转加密字节的顺序。 通过调用 Array.Reverse 该方法,可以轻松反转托管字节数组的顺序。