Поделиться через


Класс System.Security.Cryptography.RSACryptoServiceProvider

Замечание

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Класс RSACryptoServiceProvider является реализацией RSAпо умолчанию.

RSACryptoServiceProvider поддерживает размеры ключей от 384 до 16384 бит с шагом в 8 бит, если у вас установлен расширенный криптографический провайдер Microsoft. Он поддерживает размеры ключей от 384 до 512 бит с шагом по 8 бит, если у вас установлен поставщик базового шифрования Microsoft.

Допустимые размеры ключей зависят от поставщика служб шифрования (CSP), используемого экземпляром RSACryptoServiceProvider . Поставщики услуг криптографии Windows позволяют использовать размеры ключей от 384 до 16384 бит для предыдущих версий Windows до 8.1, а размеры ключей от 512 до 16384 бит для Windows 8.1. Дополнительные сведения см. в разделе функции CryptGenKey в документации по Windows.

Взаимодействие с API шифрования Майкрософт (CAPI)

В отличие от реализации RSA в неуправляемом CAPI, RSACryptoServiceProvider класс изменяет порядок зашифрованного массива байтов после шифрования и перед расшифровкой. По умолчанию данные, зашифрованные RSACryptoServiceProvider классом, не могут быть расшифрованы функцией CAPI CryptDecrypt и данными, зашифрованными методом CAPI CryptEncrypt , не могут быть расшифрованы классом RSACryptoServiceProvider .

Если вы не компенсируете обратное упорядочение при взаимодействии между API, класс RSACryptoServiceProvider выбрасывает исключение CryptographicException.

Чтобы взаимодействовать с CAPI, необходимо вручную изменить порядок зашифрованных байтов, прежде чем зашифрованные данные взаимодействуют с другим API. Можно легко изменить порядок управляемого массива байтов, вызвав Array.Reverse метод.