Freigeben über


MachineKey.Protect(Byte[], String[]) Methode

Definition

Schützt die angegebenen Daten, indem sie verschlüsselt oder signiert werden.

public:
 static cli::array <System::Byte> ^ Protect(cli::array <System::Byte> ^ userData, ... cli::array <System::String ^> ^ purposes);
public static byte[] Protect (byte[] userData, params string[] purposes);
static member Protect : byte[] * string[] -> byte[]
Public Shared Function Protect (userData As Byte(), ParamArray purposes As String()) As Byte()

Parameter

userData
Byte[]

Die zu schützenden Daten. Diese Daten werden als "Nur Text" weitergeben.

purposes
String[]

Eine Liste der Zwecke für die Daten. Wenn dieser Wert angegeben wird, muss die gleiche Liste an die Unprotect(Byte[], String[])-Methode übergeben werden, um den zurückgegebenen verschlüsselten Text zu entschlüsseln.

Gibt zurück

Byte[]

Die Daten des verschlüsselten Texts.

Ausnahmen

Der userData-Parameter ist null.

Das Begründungsarray enthält mindestens einen Leerstelleneintrag.

Hinweise

Diese Methode ersetzt die Encode Methode, die den Aufrufer erfordert, anzugeben, ob die Nurtextdaten verschlüsselt, signiert oder beides sein sollen. Die Protect Methode führt den entsprechenden Vorgang aus und schützt die Daten sicher. Ciphertext-Daten, die von dieser Methode erzeugt werden, können nur von der Unprotect Methode entschlüsselt werden.

Der purposes Parameter ist eine optionale Liste von Gründen, die den Verschlüsselungstext an einen bestimmten Zweck sperren können. Mit diesem Parameter können Sie kryptografische Vorgänge isolieren, die von verschiedenen Subsystemen innerhalb einer Anwendung ausgeführt werden. Ein böswilliger Client sollte nicht in der Lage sein, das Ergebnis der Methode eines Subsystems Protect zu erhalten und ihn als Eingabe in die Methode eines anderen Subsystems Unprotect zu feeden, was die Anwendungssicherheit beeinträchtigen könnte. Der purposes Parameter hilft sicherzustellen, dass geschützte Daten nur von der Komponente verwendet werden können, die sie ursprünglich generiert hat. Anwendungen sollten sicherstellen, dass jedes Subsystem eine eindeutige purposes Liste verwendet.

Wenn Sie beispielsweise ein Authentifizierungstoken schützen oder aufheben möchten, können Sie die Methode mithilfe von Code wie dem folgenden Beispiel aufrufen:

MachineKey.Protect(..., "Authentication token");  
MachineKey.Unprotect(..., "Authentication token");  
MachineKey.Protect(..., "Authentication token")  
MachineKey.Unprotect(..., "Authentication token")  

Anwendungen können den purposes Parameter dynamisch generieren. In diesem Fall präfixieren Sie vom Benutzer bereitgestellte Werte mit einem festen Wert (z. B. "Username: + Benutzername), um das Risiko einer böswilligen Clienterstellungseingabe zu minimieren, die einem Token entspricht, das von einem anderen Teil des Systems verwendet wird. Alle dynamisch generierten Zeichenfolgen sollten nach festen Zeichenfolgen stammen. Wenn Sie beispielsweise einen privaten Nachrichtenschutz schützen oder aufheben möchten, der an einen bestimmten Benutzer gebunden ist, verwenden Sie Code wie das folgende Beispiel:

MachineKey.Protect(..., "Private message", "Recipient: " + username);  
MachineKey.Unprotect(..., "Private message", "Recipient: " + username);  
MachineKey.Protect(..., "Private message", "Recipient: " + username)  
MachineKey.Unprotect(..., "Private message", "Recipient: " + username)  

Wenn die Unprotect Methode aufgerufen wird, muss der für den purposes Parameter bereitgestellte Wert der gleichen Wert sein, der der Protect Methode bereitgestellt wurde. Andernfalls schlägt der Vorgang mit einer CryptographicException Ausnahme fehl.

Die Konfigurationseinstellungen, die für die MachineKeyCompatibilityMode.Framework45 Option erforderlich sind, sind für diese Methode erforderlich, auch wenn die MachineKeySection.CompatibilityMode Eigenschaft nicht auf die Framework45 Option festgelegt ist.

Gilt für