共用方式為


快速入門:使用 MIP SDK 加密/解密文字 (C#)

本快速入門說明如何使用更多 MIP 保護 SDK。 使用您在上一個快速入門中列出的其中一個保護範本,您可以使用保護處理常式來加密臨機操作文字。 Protection 處理常式類別會公開套用/移除保護的各種作業。

必要條件

如果您尚未完成,請務必先完成下列必要條件,再繼續進行:

  • 完成 快速入門:先列出保護範本 (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 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. 如果您的專案建置並成功執行, 應用程式可能會在 每次 SDK 呼叫您的 AcquireToken() 方法時,提示透過 ADAL 進行驗證。 如果快取的認證已經存在,系統將不會提示您登入並查看標籤清單,後面接著已套用標籤和已修改檔案的資訊。

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