Compartilhar via


Início Rápido: criptografar/descriptografar texto usando o SDK da PIM (C#)

Este guia de início rápido mostra como usar mais dos SDKs de proteção do MIP. Usando um dos modelos de proteção listados no início rápido anterior, você usa um manipulador de proteção para criptografar texto ad hoc. A classe de manipulador de Proteção expõe várias operações para a aplicação/remoção de proteção.

Pré-requisitos

Conclua os seguintes pré-requisitos antes de continuar, caso ainda não tenha feito isso:

Adicionar lógica para definir e obter um modelo de proteção

Adicione lógica para criptografar texto ad hoc, usando o objeto do Mecanismo de proteção.

  1. Usando o Gerenciador de Soluções, abra o arquivo .cs em seu projeto que contém a implementação do método Main()`. Ele usa como padrão o mesmo nome que o projeto em que está contido, que você especificou durante a criação do projeto.

  2. No final do corpo de Main(), onde você parou no Início Rápido anterior, insira o seguinte código:

    //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. No final de Main(), encontre o bloco de desligamento do aplicativo criado no primeiro Início Rápido e adicione as linhas do manipulador:

    // Application Shutdown
    publishingHandler = null;
    consumptionHandler = null;
    protectionEngine = null;
    protectionProfile = null;
    mipContext = null;
    
  4. Substitua os valores de espaço reservado no código-fonte usando os seguintes valores:

    Espaço reservado Valor
    <sample-text> O texto de exemplo que você gostaria de criptografar, por exemplo: My secure text.
    <template-id> Uma ID de modelo, copiada da saída do console no Início Rápido anterior. Por exemplo: bb7ed207-046a-4caf-9826-647cff56b990.

Criar e testar o aplicativo

Crie e teste o aplicativo cliente.

  1. Use CTRL-SHIFT-B (Compilar solução) para compilar o aplicativo cliente. Se não houver erros de build, use F5 (Iniciar depuração) para executar o aplicativo.

  2. Se o projeto for criado e executado com sucesso, o aplicativo poderá solicitar a autenticação por meio da ADAL sempre que o SDK chamar o método AcquireToken(). Se já houver credenciais armazenadas em cache, não será solicitado que você entre e veja a lista de rótulos, seguida pelas informações sobre o rótulo aplicado e o arquivo modificado.

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