MachineKey.Protect(Byte[], String[]) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Schützt die angegebenen Daten durch Verschlüsseln oder Signieren.
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 übergeben.
- purposes
- String[]
Eine Liste der Zwecke für die Daten. Wenn dieser Wert angegeben ist, muss dieselbe Liste an die Unprotect(Byte[], String[]) Methode übergeben werden, um den zurückgegebenen Chiffretext zu entschlüsseln.
Gibt zurück
Die Chiffretextdaten.
Ausnahmen
Der userData Parameter ist NULL.
Das Zweckarray enthält einen oder mehrere Nur-Leerzeichen-Einträge.
Hinweise
Diese Methode ersetzt die Encode Methode, bei der der Aufrufer angeben muss, ob die Nur-Text-Daten verschlüsselt, signiert oder beides sein sollen. Die Protect Methode führt den entsprechenden Vorgang aus und schützt die Daten sicher. Chiffretextdaten, die von dieser Methode erzeugt werden, können nur durch die Unprotect Methode entschlüsselt werden.
Der purposes Parameter ist eine optionale Liste von Gründen, die den Chiffretext 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 übertragen, was die Anwendungssicherheit beeinträchtigen könnte. Der purposes Parameter stellt sicher, 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.
Um beispielsweise einen Authentifizierungstoken zu schützen oder aufzuheben, können Sie die Methode mit 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 schädlichen Clienterstellung zu minimieren, die einem Token entspricht, das von einem anderen Teil des Systems verwendet wird. Alle dynamisch generierten Zeichenfolgen sollten nach festen Zeichenfolgen stammen. Verwenden Sie z. B. Code wie das folgende Beispiel, um den Schutz einer privaten Nachricht zu schützen oder aufzuheben, die an einen bestimmten Benutzer gebunden ist:
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 derselbe Wert sein, der für die 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.