Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Класс RsaProtectedConfigurationProvider

 

Опубликовано: Октябрь 2016

Предоставляет экземпляр ProtectedConfigurationProvider, использующий шифрование RSA для зашифровки и дешифровки данных конфигурации.

Пространство имен:   System.Configuration
Сборка:  System.Configuration (в System.Configuration.dll)


[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public sealed class RsaProtectedConfigurationProvider : ProtectedConfigurationProvider

ИмяОписание
System_CAPS_pubmethodRsaProtectedConfigurationProvider()

Инициализирует новый экземпляр класса RsaProtectedConfigurationProvider.

ИмяОписание
System_CAPS_pubpropertyCspProviderName

Возвращает имя API шифрования Windows (API шифрования) поставщика служб шифрования (CSP).

System_CAPS_pubpropertyDescription

Возвращает краткое, понятное описание, подходящее для отображения в инструментах администрирования или других пользовательских интерфейсах (UI).(Наследуется от ProviderBase.)

System_CAPS_pubpropertyKeyContainerName

Возвращает имя контейнера ключа.

System_CAPS_pubpropertyName

Возвращает понятное имя, используемое для ссылки на поставщика во время настройки.(Наследуется от ProviderBase.)

System_CAPS_pubpropertyRsaPublicKey

Возвращает открытый ключ, используемый поставщиком.

System_CAPS_pubpropertyUseFIPS

Возвращает значение, указывающее, использует ли поставщик FIPS.

System_CAPS_pubpropertyUseMachineContainer

Возвращает значение, указывающее на то, использует ли объект RsaProtectedConfigurationProvider контейнер ключа машины.

System_CAPS_pubpropertyUseOAEP

Возвращает значение, которое указывает на то, использует ли поставщик данные обмена ключа Optimal Asymmetric Encryption Padding (OAEP).

ИмяОписание
System_CAPS_pubmethodAddKey(Int32, Boolean)

Добавляет ключ к контейнеру ключа RSA.

System_CAPS_pubmethodDecrypt(XmlNode)

Расшифровывает переданный узел XML.(Переопределяет ProtectedConfigurationProvider.Decrypt(XmlNode).)

System_CAPS_pubmethodDeleteKey()

Удаляет ключ из контейнера ключа RSA.

System_CAPS_pubmethodEncrypt(XmlNode)

Зашифровывает переданный в него узел XML.(Переопределяет ProtectedConfigurationProvider.Encrypt(XmlNode).)

System_CAPS_pubmethodEquals(Object)

Определяет, равен ли заданный объект текущему объекту.(Наследуется от Object.)

System_CAPS_pubmethodExportKey(String, Boolean)

Экспортирует ключ RSA из контейнера ключа.

System_CAPS_pubmethodGetHashCode()

Служит хэш-функцией по умолчанию.(Наследуется от Object.)

System_CAPS_pubmethodGetType()

Возвращает объект Type для текущего экземпляра.(Наследуется от Object.)

System_CAPS_pubmethodImportKey(String, Boolean)

Импортирует ключ RSA в ключ контейнера.

System_CAPS_pubmethodInitialize(String, NameValueCollection)

Выполняет инициализацию поставщика параметрами по умолчанию.(Переопределяет ProviderBase.Initialize(String, NameValueCollection).)

System_CAPS_pubmethodToString()

Возвращает строковое представление текущего объекта.
(Наследуется от Object.)

RsaProtectedConfigurationProvider Класс дает возможность Шифровать конфиденциальные данные хранятся в файле конфигурации, который помогает защитить его от несанкционированного доступа. Использовать встроенную RsaProtectedConfigurationProvider экземпляра путем объявления поставщика и создания соответствующих параметров в файле конфигурации, а не создавать экземпляр этого класса, как показано в примере ниже в этом разделе.

RsaProtectedConfigurationProvider Объект использует функции шифрования, предоставляемые RSA класса для шифрования и расшифровки разделов конфигурации.

System_CAPS_noteПримечание

Перед ASP.NET может расшифровать зашифрованные данные в файле конфигурации, идентификация приложения ASP.NET необходимо иметь доступ на чтение к ключу шифрования, используемый для шифрования и расшифровки данных конфигурации. Для получения дополнительной информации см. Walkthrough: Encrypting Configuration Information Using Protected Configuration.

В следующем примере кода показано, как использовать стандартные RsaProtectedConfigurationProvider для защиты или снять защиту раздела конфигурации.

using System;
using System.Configuration;

public class UsingRsaProtectedConfigurationProvider
{

    // Protect the connectionStrings section.
    private static void ProtectConfiguration()
    {

        // Get the application configuration file.
        System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

        // Define the Rsa provider name.
        string provider =
            "RsaProtectedConfigurationProvider";

        // Get the section to protect.
        ConfigurationSection connStrings =
            config.ConnectionStrings;

        if (connStrings != null)
        {
            if (!connStrings.SectionInformation.IsProtected)
            {
                if (!connStrings.ElementInformation.IsLocked)
                {
                    // Protect the section.
                    connStrings.SectionInformation.ProtectSection(provider);

                    connStrings.SectionInformation.ForceSave = true;
                    config.Save(ConfigurationSaveMode.Full);

                    Console.WriteLine("Section {0} is now protected by {1}",
                        connStrings.SectionInformation.Name,
                        connStrings.SectionInformation.ProtectionProvider.Name);

                }
                else
                    Console.WriteLine(
                         "Can't protect, section {0} is locked",
                         connStrings.SectionInformation.Name);
            }
            else
                Console.WriteLine(
                    "Section {0} is already protected by {1}",
                    connStrings.SectionInformation.Name,
                    connStrings.SectionInformation.ProtectionProvider.Name);

        }
        else
            Console.WriteLine("Can't get the section {0}",
                connStrings.SectionInformation.Name);

    }


    // Unprotect the connectionStrings section.
    private static void UnProtectConfiguration()
    {

        // Get the application configuration file.
        System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

        // Get the section to unprotect.
        ConfigurationSection connStrings =
            config.ConnectionStrings;

        if (connStrings != null)
        {
            if (connStrings.SectionInformation.IsProtected)
            {
                if (!connStrings.ElementInformation.IsLocked)
                {
                    // Unprotect the section.
                    connStrings.SectionInformation.UnprotectSection();

                    connStrings.SectionInformation.ForceSave = true;
                    config.Save(ConfigurationSaveMode.Full);

                    Console.WriteLine("Section {0} is now unprotected.",
                        connStrings.SectionInformation.Name);

                }
                else
                    Console.WriteLine(
                         "Can't unprotect, section {0} is locked",
                         connStrings.SectionInformation.Name);
            }
            else
                Console.WriteLine(
                    "Section {0} is already unprotected.",
                    connStrings.SectionInformation.Name);

        }
        else
            Console.WriteLine("Can't get the section {0}",
                connStrings.SectionInformation.Name);

    }


    public static void Main(string[] args)
    {

        string selection = string.Empty;

        if (args.Length == 0)
        {
            Console.WriteLine(
                "Select protect or unprotect");
            return;
        }

        selection = args[0].ToLower();

        switch (selection)
        {
            case "protect":
                ProtectConfiguration();
                break;

            case "unprotect":
                UnProtectConfiguration();
                break;

            default:
                Console.WriteLine("Unknown selection");
                break;
        }

        Console.Read();

    }


}

В следующем примере показано выдержкой из файла конфигурации после шифрования.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
        xmlns="http://www.w3.org/2001/04/xmlenc#">
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <KeyName>Rsa Key</KeyName>
          </KeyInfo>
          <CipherData>
            <CipherValue>B702tRDVHJjC3CYXt7I0ucCDjdht/Vyk/DdUhwQyt7vepSD85dwCP8ox9Y1BUdjajFeTFfFBsGypbli5HPGRYamQdrVkPo07bBBXNT5H02qxREguGUU4iDtV1Xp8BLVZjQMV4ZgP6Wbctw2xRvPC7GvKHLI4fUN/Je5LmutsijA=</CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>ME+XJA2TAj3QN3yT4pJq3sRArC0i7Cz3Da71BkaRe9QNfuVuUjcv0jeGUN4wDdOAZ7LPq6UpVrpirY3kQcALDvPJ5nKxk++Mw75rjtIO8eh2goTY9rCK6zanfzaDshFy7IqItpvs/y2kmij25nM3ury6uO0hCf0UbEL1mbT2jXDqvcrHZUobO1Ef6bygBZ/8HpU+VfF9CTCob/BBE9zUkK37EQhcduwsnzBvDblYbF/Rd+F4lxAkZnecGLfCZjOzJB4xH1a0vvWtPR7zNwL/7I0uHzQjyMdWrkBnotMjoR70R7NELBotCogWO0MBimncKigdR3dTTdrCd72a7UJ4LMlEQaZXGIJp4PIg6qVDHII=</CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>
</configuration>

SecurityPermission

for full access to the resource protected by the permission. F:System.Security.Permissions.SecurityAction.Demand.

.NET Framework
Доступно с 2.0

Любые открытые статические элементы ( Предоставлен общий доступ в Visual Basic) этого типа являются потокобезопасными. Потокобезопасность элементов экземпляров не гарантируется.

Вернуться в начало
Показ: