Protect Method
Collapse the table of content
Expand the table of content

ProtectedData.Protect Method

Note: This method is new in the .NET Framework version 2.0.

Protects the userData parameter and returns a byte array.

Namespace: System.Security.Cryptography
Assembly: System.Security (in system.security.dll)

public static byte[] Protect (
	byte[] userData,
	byte[] optionalEntropy,
	DataProtectionScope scope
)
public static byte[] Protect (
	byte[] userData, 
	byte[] optionalEntropy, 
	DataProtectionScope scope
)
public static function Protect (
	userData : byte[], 
	optionalEntropy : byte[], 
	scope : DataProtectionScope
) : byte[]

Parameters

userData

A byte array containing data to protect.

optionalEntropy

An additional byte array used to encrypt the data.

scope

One of the DataProtectionScope values.

Return Value

A byte array representing the encrypted data.

Exception typeCondition

ArgumentNullException

The userData parameter is a null reference (Nothing in Visual Basic).

CryptographicException

The cryptographic protection failed.

PlatformNotSupportedException

The operating system does not support this method. This method can be used only with Microsoft Windows 2000 or later operating systems.

OutOfMemoryException

The system ran out of memory while encrypting the data.

This method can be used to protect data such as passwords, keys, or connection strings. The optionalEntropy parameter enables you to use additional information to protect the data. This information must also be used when unprotecting the data using the Unprotect method.

The following code example shows how to use data protection.

using System;
using System.Security.Cryptography;

public class DataProtectionSample
{
// Create byte array for additional entropy when using Protect method.
	static byte [] s_aditionalEntropy = { 9, 8, 7, 6, 5 };

	public static void Main()
	{
// Create a simple byte array containing data to be encrypted.
		
byte [] secret = { 0, 1, 2, 3, 4, 1, 2, 3, 4 };

//Encrypt the data.
		byte [] encryptedSecret = Protect( secret );
		Console.WriteLine("The encrypted byte array is:");
		PrintValues(encryptedSecret);
		
// Decrypt the data and store in a byte array.
		byte [] originalData = Unprotect( encryptedSecret );
		Console.WriteLine("{0}The original data is:", Environment.NewLine);
		PrintValues(originalData);

	}

	public static byte [] Protect( byte [] data )
	{
		try
		{
			// Encrypt the data using DataProtectionScope.CurrentUser. The result can be decrypted
			//  only by the same current user.
			return ProtectedData.Protect( data, s_aditionalEntropy, DataProtectionScope.CurrentUser );
		} 
		catch (CryptographicException e)
		{
			Console.WriteLine("Data was not encrypted. An error occurred.");
			Console.WriteLine(e.ToString());
			return null;
		}
	}

	public static byte [] Unprotect( byte [] data )
	{
		try
		{
			//Decrypt the data using DataProtectionScope.CurrentUser.
			return ProtectedData.Unprotect( data, s_aditionalEntropy, DataProtectionScope.CurrentUser );
		} 
		catch (CryptographicException e)
		{
			Console.WriteLine("Data was not decrypted. An error occurred.");
			Console.WriteLine(e.ToString());
			return null;
		}
	}

	public static void PrintValues( Byte[] myArr )  
	{
	      foreach ( Byte i in myArr )  
		  	{
		         Console.Write( "\t{0}", i );
			 }
      Console.WriteLine();
	 }

}

import System.*;
import System.Security.Cryptography.*;

public class DataProtectionSample
{
    // Create byte array for additional entropy when using Protect method.
    private static ubyte sAditionalEntropy[] =  { 9, 8, 7, 6, 5 };

    public static void main(String args[])
    {
        // Create a simple byte array containing data to be encrypted.
        ubyte secret[] =  { 0, 1, 2, 3, 4, 1, 2, 3, 4 };
        //Encrypt the data.
        ubyte encryptedSecret[] = Protect(secret);
        Console.WriteLine("The encrypted byte array is:");
        PrintValues(encryptedSecret);
        // Decrypt the data and store in a byte array.
        ubyte originalData[] = Unprotect(encryptedSecret);
        Console.WriteLine("{0}The original data is:", 
            Environment.get_NewLine());
        PrintValues(originalData);
    } //main

    public static ubyte[] Protect(ubyte data[])
    {
        try {
            // Encrypt the data using DataProtectionScope.CurrentUser. 
            // The result can be decrypted only by the same current user.
            return ProtectedData.Protect(data, sAditionalEntropy, 
                DataProtectionScope.CurrentUser);
        }
        catch (CryptographicException e) {
            Console.WriteLine("Data was not encrypted. An error occurred.");
            Console.WriteLine(e.ToString());
            return null;
        }
    } //Protect

    public static ubyte[] Unprotect(ubyte data[])
    {
        try {
            //Decrypt the data using DataProtectionScope.CurrentUser.
            return ProtectedData.Unprotect(data, sAditionalEntropy, 
                DataProtectionScope.CurrentUser);
        }
        catch (CryptographicException e) {
            Console.WriteLine("Data was not decrypted. An error occurred.");
            Console.WriteLine(e.ToString());
            return null;
        }
    } //Unprotect

    public static void PrintValues(ubyte myArr[])
    {
        for (int iCtr = 0; iCtr < myArr.length; iCtr++) {
            ubyte i = myArr[iCtr];
            Console.Write("\t{0}", System.Convert.ToString(i));
        }
        Console.WriteLine();
    } //PrintValues
} //DataProtectionSample 

Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0

Community Additions

ADD
Show:
© 2016 Microsoft