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


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

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

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

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

Допустимые размеры ключей зависят от поставщика служб шифрования (CSP), используемого экземпляром RSACryptoServiceProvider . Ос CSPs windows позволяют использовать размеры ключей в 384–16384 битах для Windows до 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 метод.