ProtectedData ProtectedData ProtectedData ProtectedData Class

Definice

Poskytuje metody pro šifrování a dešifrování dat.Provides methods for encrypting and decrypting data. Tato třída nemůže dědit.This class cannot be inherited.

public ref class ProtectedData sealed
public sealed class ProtectedData
type ProtectedData = class
Public NotInheritable Class ProtectedData
Dědičnost
ProtectedDataProtectedDataProtectedDataProtectedData

Příklady

Následující příklad ukazuje, jak používat ochranu dat.The following example shows how to use data protection.

#using <System.Security.dll>

using namespace System;
using namespace System::Security::Cryptography;

public ref class DataProtectionSample
{
private:

   // Create byte array for additional entropy when using Protect method.
   static array<Byte>^s_aditionalEntropy = {9,8,7,6,5};

public:
   static void Main()
   {
      
      // Create a simple byte array containing data to be encrypted.
      array<Byte>^secret = {0,1,2,3,4,1,2,3,4};
      
      //Encrypt the data.
      array<Byte>^encryptedSecret = Protect( secret );
      Console::WriteLine( "The encrypted byte array is:" );
      PrintValues( encryptedSecret );
      
      // Decrypt the data and store in a byte array.
      array<Byte>^originalData = Unprotect( encryptedSecret );
      Console::WriteLine( "{0}The original data is:", Environment::NewLine );
      PrintValues( originalData );
   }

   static array<Byte>^ Protect( array<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 );
         return nullptr;
      }
   }

   static array<Byte>^ Unprotect( array<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 );
         return nullptr;
      }
   }

   static void PrintValues( array<Byte>^myArr )
   {
      System::Collections::IEnumerator^ myEnum = myArr->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Byte i = safe_cast<Byte>(myEnum->Current);
         Console::Write( "\t{0}", i );
      }

      Console::WriteLine();
   }
};

int main()
{
   DataProtectionSample::Main();
}
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();
	 }

}
Imports System
Imports System.Security.Cryptography



Public Class DataProtectionSample
    ' Create byte array for additional entropy when using Protect method.
    Private Shared s_aditionalEntropy As Byte() = {9, 8, 7, 6, 5}


    Public Shared Sub Main()
        ' Create a simple byte array containing data to be encrypted.
        Dim secret As Byte() = {0, 1, 2, 3, 4, 1, 2, 3, 4}

        'Encrypt the data.
        Dim encryptedSecret As Byte() = Protect(secret)
        Console.WriteLine("The encrypted byte array is:")
        PrintValues(encryptedSecret)

        ' Decrypt the data and store in a byte array.
        Dim originalData As Byte() = Unprotect(encryptedSecret)
        Console.WriteLine("{0}The original data is:", Environment.NewLine)
        PrintValues(originalData)

    End Sub


    Public Shared Function Protect(ByVal data() As Byte) As Byte()
        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 e As CryptographicException
            Console.WriteLine("Data was not encrypted. An error occurred.")
            Console.WriteLine(e.ToString())
            Return Nothing
        End Try

    End Function


    Public Shared Function Unprotect(ByVal data() As Byte) As Byte()
        Try
            'Decrypt the data using DataProtectionScope.CurrentUser.
            Return ProtectedData.Unprotect(data, s_aditionalEntropy, DataProtectionScope.CurrentUser)
        Catch e As CryptographicException
            Console.WriteLine("Data was not decrypted. An error occurred.")
            Console.WriteLine(e.ToString())
            Return Nothing
        End Try

    End Function


    Public Shared Sub PrintValues(ByVal myArr() As [Byte])
        Dim i As [Byte]
        For Each i In myArr
            Console.Write(vbTab + "{0}", i)
        Next i
        Console.WriteLine()

    End Sub
End Class

Poznámky

Tato třída poskytuje přístup k Data Protection API (DPAPI) k dispozici v operačních systémech Windows.This class provides access to the Data Protection API (DPAPI) available in Windows operating systems. Toto je služba, která je k dispozici v operačním systému a další knihovny se nevyžaduje.This is a service that is provided by the operating system and does not require additional libraries. Poskytuje ochranu pro šifrování nebo dešifrování dat pomocí přihlašovacích údajů uživatele nebo počítače.It provides protection using the user or machine credentials to encrypt or decrypt data.

Důležité

Protože závisí na rozhraní DPAPI, ProtectedData třídy se podporuje na platformu Windows.Because it depends on DPAPI, the ProtectedData class is supported on the Windows platform only. Vyvolá jeho použití v rozhraní .NET Core na jiných platformách než Windows PlatformNotSupportedException.Its use on .NET Core on platforms other than Windows throws a PlatformNotSupportedException.

Třídy se skládá ze dvou obálky pro nespravované DPAPI Protect a Unprotect.The class consists of two wrappers for the unmanaged DPAPI, Protect and Unprotect. Tyto dvě metody slouží k šifrování a dešifrování dat, jako jsou hesla, klíče a připojovací řetězce.These two methods can be used to encrypt and decrypt data such as passwords, keys, and connection strings.

Pokud během zosobnění používat tyto metody, může se zobrazit následující chyba: "Klíč není platný pro použití v zadaném stavu."If you use these methods during impersonation, you may receive the following error: "Key not valid for use in specified state." K tomu dochází, protože rozhraní DPAPI ukládá klíčových dat v uživatelských profilů.This occurs because the DPAPI stores the key data in user profiles. Pokud je profil, který není načten, DPAPI nebude možné provádět dešifrování.If the profile is not loaded, DPAPI won't be able to perform the decryption. K této chybě zabránit, načtěte profil uživatele, kterou chcete zosobnit před voláním některé z metod.To prevent this error, load the profile of the user you want to impersonate before calling either method. Pomocí rozhraní DPAPI zosobnění s sebou může nést významné komplikací a vyžaduje pečlivě navržené možnosti.Using DPAPI with impersonation can incur significant complication and requires careful design choices.

Metody

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Určuje, zda se zadaný objekt rovná aktuálnímu objektu.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Slouží jako výchozí funkce hash.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Získá Type aktuální instance.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Vytvoří Mělkou kopii aktuální Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Protect(Byte[], Byte[], DataProtectionScope) Protect(Byte[], Byte[], DataProtectionScope) Protect(Byte[], Byte[], DataProtectionScope) Protect(Byte[], Byte[], DataProtectionScope)

Šifruje data v zadané bajtové pole a vrátí pole bajtů obsahující šifrovaná data.Encrypts the data in a specified byte array and returns a byte array that contains the encrypted data.

ToString() ToString() ToString() ToString()

Vrací řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

(Inherited from Object)
Unprotect(Byte[], Byte[], DataProtectionScope) Unprotect(Byte[], Byte[], DataProtectionScope) Unprotect(Byte[], Byte[], DataProtectionScope) Unprotect(Byte[], Byte[], DataProtectionScope)

Dešifruje data v zadané bajtové pole a vrátí pole bajtů obsahující dešifrovaná data.Decrypts the data in a specified byte array and returns a byte array that contains the decrypted data.

Platí pro