Auf Englisch lesen

Teilen über


ProtectedData Klasse

Definition

Stellt Methoden zum Verschlüsseln und Entschlüsseln von Daten bereit. Diese Klasse kann nicht vererbt werden.

C#
public static class ProtectedData
C#
public sealed class ProtectedData
Vererbung
ProtectedData

Beispiele

Im folgenden Beispiel wird gezeigt, wie Der Datenschutz verwendet wird.

C#
using System;
using System.Security.Cryptography;

public class DataProtectionSample
{
    // Create byte array for additional entropy when using Protect method.
    static byte [] s_additionalEntropy = { 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_additionalEntropy, 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_additionalEntropy, 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();
    }
}

Hinweise

Diese Klasse bietet Zugriff auf die Datenschutz-API (DPAPI), die unter Windows-Betriebssystemen verfügbar ist. Dies ist ein Dienst, der vom Betriebssystem bereitgestellt wird und keine zusätzlichen Bibliotheken erfordert. Es bietet Schutz unter Verwendung der Benutzer- oder Computeranmeldeinformationen zum Verschlüsseln oder Entschlüsseln von Daten.

Wichtig

Da dies von DPAPI abhängt, wird die ProtectedData -Klasse nur auf der Windows-Plattform unterstützt. Die Verwendung in .NET Core auf anderen Plattformen als Windows löst ein aus PlatformNotSupportedException.

Die -Klasse besteht aus zwei Wrappern für die nicht verwaltete DPAPI Protect und Unprotect. Diese beiden Methoden können zum Verschlüsseln und Entschlüsseln von Daten wie Kennwörtern, Schlüsseln und Verbindungszeichenfolgen verwendet werden.

Wenn Sie diese Methoden während des Identitätswechsels verwenden, erhalten Sie möglicherweise die folgende Fehlermeldung: "Key not valid for use in specified state". Dies tritt auf, weil die DPAPI die Schlüsseldaten in Benutzerprofilen speichert. Wenn das Profil nicht geladen wird, kann DPAPI die Entschlüsselung nicht ausführen. Laden Sie das Profil des Benutzers, den Sie annehmen möchten, bevor Sie beide Methoden aufrufen, um diesen Fehler zu verhindern. Die Verwendung von DPAPI mit Identitätswechsel kann zu erheblichen Komplikationen führen und erfordert sorgfältige Entwurfsentscheidungen.

Methoden

Protect(Byte[], Byte[], DataProtectionScope)

Verschlüsselt die Daten in einem angegebenen Bytearray und gibt ein Bytearray zurück, das die verschlüsselten Daten enthält.

Protect(ReadOnlySpan<Byte>, DataProtectionScope, ReadOnlySpan<Byte>)

Stellt Methoden zum Verschlüsseln und Entschlüsseln von Daten bereit. Diese Klasse kann nicht vererbt werden.

Protect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, ReadOnlySpan<Byte>)

Stellt Methoden zum Verschlüsseln und Entschlüsseln von Daten bereit. Diese Klasse kann nicht vererbt werden.

TryProtect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, Int32, ReadOnlySpan<Byte>)

Stellt Methoden zum Verschlüsseln und Entschlüsseln von Daten bereit. Diese Klasse kann nicht vererbt werden.

TryUnprotect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, Int32, ReadOnlySpan<Byte>)

Stellt Methoden zum Verschlüsseln und Entschlüsseln von Daten bereit. Diese Klasse kann nicht vererbt werden.

Unprotect(Byte[], Byte[], DataProtectionScope)

Entschlüsselt die Daten in einem angegebenen Bytearray und gibt ein Bytearray zurück, das die entschlüsselten Daten enthält.

Unprotect(ReadOnlySpan<Byte>, DataProtectionScope, ReadOnlySpan<Byte>)

Stellt Methoden zum Verschlüsseln und Entschlüsseln von Daten bereit. Diese Klasse kann nicht vererbt werden.

Unprotect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, ReadOnlySpan<Byte>)

Stellt Methoden zum Verschlüsseln und Entschlüsseln von Daten bereit. Diese Klasse kann nicht vererbt werden.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10