Краткое руководство. Шифрование и расшифровка текста с помощью пакета SDK для MIP (C#)
В этом кратком руководстве описано, как расширить возможности пакетов SDK для защиты MIP. Используя один из шаблонов защиты, перечисленных в предыдущем кратком руководстве, для шифрования текста ad-hoc используется обработчик защиты. Класс обработчика защиты предоставляет различные операции для применения или удаления защиты.
Необходимые компоненты
Прежде чем продолжить, выполните следующие предварительные требования:
- Сначала см. статью Краткое руководство. Шаблоны защиты списка (C#), в которой создается начальное решение Visual Studio для создания списка шаблонов защиты, доступных пользователю, который прошел проверку подлинности. Краткое руководство "Шифрование и расшифровка текста" базируется на предыдущем.
- При необходимости изучите основные понятия статьи Обработчики защиты в пакете SDK для MIP.
Добавление логики для установки и получения шаблона защиты
Добавьте логику для шифрования текста ad-hoc с помощью объекта обработчика защиты.
С помощью Обозревателя решений откройте в проекте CS-файл, содержащий реализацию метода Main()`. По умолчанию он имеет то же имя, что и содержащий его проект, который вы указали при создании проекта.
Вставьте следующий код в конце тела метода
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();
В конце
Main()
найдите блок завершения работы приложения, созданный в первом кратком руководстве, и добавьте строки обработчика:// Application Shutdown publishingHandler = null; consumptionHandler = null; protectionEngine = null; protectionProfile = null; mipContext = null;
Замените значения-заполнители в исходном коде следующими значениями:
Заполнитель Значение <sample-text> Пример текста, который вы хотите зашифровать, например: My secure text
.<template-id> Идентификатор шаблона, скопированный из выходных данных консоли в предыдущем кратком руководстве, например: bb7ed207-046a-4caf-9826-647cff56b990
.
Создание и тестирование приложения
Выполните сборку клиентского приложения и протестируйте его.
Нажмите клавиши CTRL+SHIFT+B (Собрать решение), чтобы выполнить сборку клиентского приложения. Если ошибок сборки нет, нажмите клавишу F5 (Начать отладку), чтобы запустить приложение.
Если проект успешно создан и запущен, приложение может запрашивать проверку подлинности через ADAL каждый раз, когда пакет SDK вызывает метод
AcquireToken()
. Если кэшированные учетные данные уже имеются, вам не будет предлагаться выполнить вход и просмотреть список меток со сведениями о каждой из них и об измененных файлах.
Original content: My secure text
Encrypted content: c?_hp???Q??+<?
Decrypted content: My secure text
Press a key to quit.