Csharp/CSharp Tutorial/Security/ProtectedData
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>