ProtectedData.Protect Method

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[]
Not applicable.

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.

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 Server 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0

Community Additions

ADD
Show: