Класс 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 метод.