快速入門:使用 MIP SDK 加密/解密文字 (C#)
本快速入門說明如何使用更多 MIP 保護 SDK。 使用您在上一個快速入門中列出的其中一個保護範本,您可以使用保護處理常式來加密臨機操作文字。 Protection 處理常式類別會公開套用/移除保護的各種作業。
必要條件
如果您尚未完成,請務必先完成下列必要條件,再繼續進行:
- 完成 快速入門:先列出保護範本 (C#) 以建置入門 Visual Studio 解決方案,以列出可供已驗證使用者使用的保護範本。 本「加密/解密文字」快速入門是以上一個快速入門為基礎。
- 選擇性:檢閱 MIP SDK 概念中的保護處理常式。
新增邏輯以設定並取得保護範本
使用保護引擎物件新增邏輯來加密臨機操作文字。
使用 方案總管 ,在您的專案中開啟 .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 ( 開始偵錯 ) 來執行應用程式。
如果您的專案建置並成功執行, 應用程式可能會在 每次 SDK 呼叫您的
AcquireToken()
方法時,提示透過 ADAL 進行驗證。 如果快取的認證已經存在,系統將不會提示您登入並查看標籤清單,後面接著已套用標籤和已修改檔案的資訊。
Original content: My secure text
Encrypted content: c?_hp???Q??+<?
Decrypted content: My secure text
Press a key to quit.