Краткое руководство: шифрование и расшифровка текста с использованием MIP SDK (C#)

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

Предпосылки

Если вы еще не сделали этого, перед продолжением обязательно выполните следующие предварительные требования:

  • Завершите Краткое руководство: Список шаблонов защиты (C#) сначала, которое создает начальное решение Visual Studio, чтобы перечислить шаблоны защиты, доступные для аутентифицированного пользователя. Это краткое руководство по шифрованию и расшифровке текста основывается на предыдущем.
  • При необходимости: просмотрите концепции обработчиков защиты в MIP SDK.

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

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

  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 license
    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. Замените значения заполнителей в исходном коде следующими значениями:

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

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

Создайте и протестируйте клиентское приложение.

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

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

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