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


Краткое руководство. Шифрование и расшифровка текста с помощью пакета SDK для MIP (C#)

В этом кратком руководстве описано, как расширить возможности пакетов SDK для защиты MIP. Используя один из шаблонов защиты, перечисленных в предыдущем кратком руководстве, для шифрования текста ad-hoc используется обработчик защиты. Класс обработчика защиты предоставляет различные операции для применения или удаления защиты.

Необходимые компоненты

Прежде чем продолжить, выполните следующие предварительные требования:

Добавление логики для установки и получения шаблона защиты

Добавьте логику для шифрования текста ad-hoc с помощью объекта обработчика защиты.

  1. С помощью Обозревателя решений откройте в проекте CS-файл, содержащий реализацию метода Main()`. По умолчанию он имеет то же имя, что и содержащий его проект, который вы указали при создании проекта.

  2. Вставьте следующий код в конце тела метода Main() (где вы закончили работу в предыдущем руководстве):

    //Set text to encrypt and template ID
    string inputText = "<Sample-text>";
    string templateId = "<template-id>";
    //Create a template based publishing descriptor
    ProtectionDescriptor protectionDescriptor = new ProtectionDescriptor(templateId);
    
    //Create publishing settings using protection descriptor
    PublishingSettings publishingSettings = new PublishingSettings(protectionDescriptor);
    
    //Generate Protection Handler for publishing
    var publishingHandler = Task.Run(async() => await protectionEngine.CreateProtectionHandlerForPublishingAsync(publishingSettings)).Result;
    
    //Encrypt text using Publishing handler
    long bufferSize = publishingHandler.GetProtectedContentLength(inputText.Length, true);
    byte[] inputTextBuffer = Encoding.ASCII.GetBytes(inputText);
    byte[] encryptedTextBuffer = new byte[bufferSize];
    publishingHandler.EncryptBuffer(0, inputTextBuffer, encryptedTextBuffer, true);
    Console.WriteLine("Original text: {0}", inputText);
    Console.WriteLine("Encrypted text: {0}", Encoding.UTF8.GetString(encryptedTextBuffer));
    
    //Create a Protection handler for consumption using the same publishing licence
    var serializedPublishingLicense = publishingHandler.GetSerializedPublishingLicense();
    PublishingLicenseInfo plInfo = PublishingLicenseInfo.GetPublishingLicenseInfo(serializedPublishingLicense);
    ConsumptionSettings consumptionSettings = new ConsumptionSettings(plInfo);
    var consumptionHandler = protectionEngine.CreateProtectionHandlerForConsumption(consumptionSettings);
    
    //Use the handler to decrypt the encrypted text
    long buffersize = encryptedTextBuffer.Length;
    byte[] decryptedBuffer = new byte[bufferSize];
    var bytesDecrypted = consumptionHandler.DecryptBuffer(0, encryptedTextBuffer, decryptedBuffer, true);
    byte[] OutputBuffer = new byte[bytesDecrypted];
    for (int i = 0; i < bytesDecrypted; i++){
       OutputBuffer[i] = decryptedBuffer[i];
    }
    
    Console.WriteLine("Decrypted content: {0}", Encoding.UTF8.GetString(OutputBuffer));
    Console.WriteLine("Press a key to quit.");
    Console.ReadKey();
    
    
  3. В конце Main() найдите блок завершения работы приложения, созданный в первом кратком руководстве, и добавьте строки обработчика:

    // Application Shutdown
    publishingHandler = null;
    consumptionHandler = null;
    protectionEngine = null;
    protectionProfile = null;
    mipContext = null;
    
  4. Замените значения-заполнители в исходном коде следующими значениями:

    Заполнитель Значение
    <sample-text> Пример текста, который вы хотите зашифровать, например: My secure text.
    <template-id> Идентификатор шаблона, скопированный из выходных данных консоли в предыдущем кратком руководстве, например: bb7ed207-046a-4caf-9826-647cff56b990.

Создание и тестирование приложения

Выполните сборку клиентского приложения и протестируйте его.

  1. Нажмите клавиши CTRL+SHIFT+B (Собрать решение), чтобы выполнить сборку клиентского приложения. Если ошибок сборки нет, нажмите клавишу F5 (Начать отладку), чтобы запустить приложение.

  2. Если проект успешно создан и запущен, приложение может запрашивать проверку подлинности через ADAL каждый раз, когда пакет SDK вызывает метод AcquireToken(). Если кэшированные учетные данные уже имеются, вам не будет предлагаться выполнить вход и просмотреть список меток со сведениями о каждой из них и об измененных файлах.

 Original content: My secure text
 Encrypted content: c?_hp???Q??+<?
 Decrypted content: My secure text
 Press a key to quit.