Csharp/CSharp Tutorial/Security/ProtectedData

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Encrypted/Decrypted string

<source lang="csharp">using System; using System.Text; using System.Security.Cryptography; class MainClass {

   public static void Main()
   {
       string str = "string";
       byte[] entropy = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
       byte[] enc = ProtectedData.Protect(Encoding.Unicode.GetBytes(str), entropy, DataProtectionScope.LocalMachine);
       Console.WriteLine("\nEncrypted string = {0}", BitConverter.ToString(enc));
       byte[] dec = ProtectedData.Unprotect(enc, entropy, DataProtectionScope.CurrentUser);
       Console.WriteLine("\nDecrypted data using CurrentUser scope = {0}", Encoding.Unicode.GetString(dec));
   }

}</source>

Encrypted string = 01-00-00-00-D0-8C-9D-DF-01-15-D1-11-8C-7A-00-C0-4F-C2-97-EB-01-00-00-00-10-5D-50-
C0-33-89-20-49-A3-DD-99-EC-D2-99-48-83-04-00-00-00-02-00-00-00-00-00-03-66-00-00-A8-00-00-00-10-00-0
0-00-46-11-DD-4B-03-12-CA-0B-26-DF-A0-52-18-FC-8C-8A-00-00-00-00-04-80-00-00-A0-00-00-00-10-00-00-00
-A2-2F-CF-2A-22-A9-77-00-D1-CC-73-FD-D7-ED-74-5E-10-00-00-00-10-DA-49-47-7D-C9-55-3F-05-26-F7-D2-1A-
80-1A-AD-14-00-00-00-6E-D7-CC-91-BA-6B-64-54-DC-12-A7-CA-F2-08-A2-B6-19-02-E4-B6
Decrypted data using CurrentUser scope = string

Using ProtectedData to protect string value

<source lang="csharp">using System; using System.Security; using System.Security.Cryptography; using System.Collections.Generic; using System.Text;

   class Program
   {
       static void Main(string[] args)
       {
           string fileMessage = "this is another test";
           byte[] fileMsgArray = System.Text.ASCIIEncoding.ASCII.GetBytes(fileMessage);
           byte[] entropy = { 0, 1, 3, 5, 7, 9 };
           byte[] protectedMessage = ProtectedData.Protect(fileMsgArray, entropy, DataProtectionScope.CurrentUser);
           Console.WriteLine("Protected byte array:");
           Console.WriteLine(System.Text.ASCIIEncoding.ASCII.GetString(protectedMessage));
           byte[] clearMessage = ProtectedData.Unprotect(protectedMessage, entropy, DataProtectionScope.CurrentUser);
           Console.WriteLine("Unprotected/Decrypted Data:");
           Console.WriteLine(ASCIIEncoding.ASCII.GetString(clearMessage));
       }
   }</source>

Using ProtectedMemory to protect a string

<source lang="csharp">using System; using System.Security; using System.Security.Cryptography; using System.Collections.Generic; using System.Text;

   class Program
   {
       static void Main(string[] args)
       {
           string messageToProtect = "this is a test";
           byte[] messageArray = System.Text.ASCIIEncoding.ASCII.GetBytes(messageToProtect);
           ProtectedMemory.Protect(messageArray, MemoryProtectionScope.SameLogon);
           Console.WriteLine(System.Text.ASCIIEncoding.ASCII.GetString(messageArray));
           ProtectedMemory.Unprotect(messageArray, MemoryProtectionScope.SameLogon);
           Console.WriteLine(System.Text.ASCIIEncoding.ASCII.GetString(messageArray));
       }
   }</source>