ProtectedData ProtectedData ProtectedData ProtectedData Class

Definice

Poskytuje metody pro šifrování a dešifrování dat.Provides methods for encrypting and decrypting data. Tuto třídu nelze zdě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 poskytovaná operačním systémem a nevyžaduje další knihovny.This is a service that is provided by the operating system and does not require additional libraries. Poskytuje ochranu pomocí přihlašovacích údajů uživatele nebo počítače k šifrování nebo dešifrování dat.It provides protection using the user or machine credentials to encrypt or decrypt data.

Důležité

Vzhledem k tomu, že závisí na ProtectedData rozhraní DPAPI, třída je podporována pouze pro platformu Windows.Because it depends on DPAPI, the ProtectedData class is supported on the Windows platform only. Jeho použití na .NET Core na jiných platformách než Windows vyvolá PlatformNotSupportedExceptionvýjimku.Its use on .NET Core on platforms other than Windows throws a PlatformNotSupportedException.

Třída se skládá ze dvou obálek pro nespravovaný DPAPI Protect a. UnprotectThe class consists of two wrappers for the unmanaged DPAPI, Protect and Unprotect. Tyto dvě metody lze použít 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 použijete tyto metody během zosobnění, 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á data v uživatelských profilech.This occurs because the DPAPI stores the key data in user profiles. Pokud profil není načtený, DPAPI nebude moci provést dešifrování.If the profile is not loaded, DPAPI won't be able to perform the decryption. Chcete-li této chybě zabránit, načtěte před voláním jakékoli metody profil uživatele, kterého chcete zosobnit.To prevent this error, load the profile of the user you want to impersonate before calling either method. Použití DPAPI s zosobněním může významně zkomplikovat a vyžaduje pečlivé možnosti návrhu.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)

Zašifruje data v zadaném bajtovém poli 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ém bajtovém poli a vrátí bajtové pole 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