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

Definition

Schützt die angegebenen Daten, indem sie verschlüsselt oder signiert werden.Protects the specified data by encrypting or signing it.

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.The data to protect. Diese Daten werden als "Nur Text" weitergeben.This data is passed as plaintext.

purposes
String[]

Eine Liste der Zwecke für die Daten.A list of purposes for the data. 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.If this value is specified, the same list must be passed to the Unprotect(Byte[], String[]) method in order to decipher the returned ciphertext.

Gibt zurück

Byte[]

Die Daten des verschlüsselten Texts.The ciphertext data.

Ausnahmen

Der userData-Parameter ist null.The userData parameter is null.

Das Begründungsarray enthält mindestens einen Leerstelleneintrag.The purposes array contains one or more white-space-only entries.

Hinweise

Diese Methode löst die Encode -Methode aus, die erfordert, dass der Aufrufer angibt, ob die Klartext-Daten verschlüsselt, signiert oder beides sein sollen.This method supersedes the Encode method, which requires the caller to specify whether the plaintext data should be encrypted, signed, or both. Die Protect -Methode führt den entsprechenden Vorgang aus und schützt die Daten sicher.The Protect method performs the appropriate operation and securely protects the data. Von dieser Methode erstellte Chiffre Text Daten können nur von der Unprotect -Methode decoiert werden.Ciphertext data produced by this method can only be deciphered by the Unprotect method.

Der purposes -Parameter ist eine optionale Liste von Gründen, die den Chiffre Text für einen bestimmten Zweck Sperren können.The purposes parameter is an optional list of reasons that can lock the ciphertext to a specific purpose. Mit diesem Parameter können Sie kryptografische Vorgänge isolieren, die von unterschiedlichen Subsystemen in einer Anwendung ausgeführt werden.This parameter lets you isolate cryptographic operations performed by different subsystems within an application. Ein böswilliger Client sollte nicht in der Lage sein, das Ergebnis der- Protect Methode eines Subsystems zu erhalten und es als Eingabe Unprotect an die-Methode eines anderen Subsystems zu übertragen, was die Anwendungssicherheit beeinträchtigen könnte.A malicious client should not be able to get the result of one subsystem's Protect method and feed it as input to another subsystem's Unprotect method, which could compromise application security. Mit purposes dem-Parameter wird sichergestellt, dass geschützte Daten nur von der Komponente verwendet werden können, die Sie ursprünglich generiert hat.The purposes parameter helps ensure that protected data can only be used by the component that originally generated it. Anwendungen sollten sicherstellen, dass jedes Subsystem eine eindeutige purposes Liste verwendet.Applications should make sure that each subsystem uses a unique purposes list.

Um z. b. ein Authentifizierungs Token zu schützen oder den Schutz aufzuheben, können Sie die-Methode mithilfe von Code wie im folgenden Beispiel aufzurufen:For example, to protect or unprotect an authentication token, you could call the method using code like the following example:

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

Anwendungen können den purposes Parameter dynamisch generieren.Applications can dynamically generate the purposes parameter. Stellen Sie in diesem Fall vom Benutzer bereitgestellte Werte einen festgelegten Wert bereit (Username: z. b. "" + username), um das Risiko zu minimieren, dass ein böswilliger Client eine Eingabe durchläuft, die mit einem von einem anderen Teil des Systems verwendeten Token übereinstimmt.In that case, prefix user-supplied values with a fixed value (like "Username: " + username) to minimize the risk of a malicious client crafting input that matches a token that is used by some other part of the system. Alle dynamisch generierten Zeichen folgen sollten nach fixierten Zeichen folgen liegen.Any dynamically-generated strings should come after fixed strings. Um z. b. eine private Nachricht, die an einen bestimmten Benutzer gebunden ist, zu schützen oder deren Schutz aufzuheben, verwenden Sie Code wie im folgenden Beispiel:For example, to protect or unprotect a private message that is tied to a specific user, use code like the following example:

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 Wert, der für purposes den-Parameter bereitgestellt wird, mit dem Wert identisch Protect sein, der für die-Methode bereitgestellt wurde.When the Unprotect method is called, the value that is provided for the purposes parameter must be the same value that was provided to the Protect method. Andernfalls schlägt der Vorgang mit einer CryptographicException -Ausnahme fehl.Otherwise the operation will fail with a CryptographicException exception.

Die Konfigurationseinstellungen, die für die MachineKeyCompatibilityMode.Framework45 Option erforderlich sind, sind für diese Methode erforderlich, auch wenn die MachineKeySection.CompatibilityMode -Eigenschaft nicht Framework45 auf die-Option festgelegt ist.The configuration settings that are required for the MachineKeyCompatibilityMode.Framework45 option are required for this method even if the MachineKeySection.CompatibilityMode property is not set to the Framework45 option.

Gilt für: