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

Definicja

Chroni określone dane, szyfrując lub podpisując je.

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()

Parametry

userData
Byte[]

Dane do ochrony. Te dane są przekazywane jako zwykły tekst.

purposes
String[]

Lista celów dla danych. Jeśli ta wartość jest określona, ta sama lista musi zostać przekazana do Unprotect(Byte[], String[]) metody, aby rozszyfrować zwrócony tekst szyfrowania.

Zwraca

Byte[]

Dane szyfrowania tekstu.

Wyjątki

Parametr userData ma wartość null.

Tablica celów zawiera co najmniej jeden wpis tylko biały odstęp.

Uwagi

Ta metoda zastępuje metodę Encode , która wymaga, aby obiekt wywołujący określić, czy dane zwykłego tekstu powinny być szyfrowane, podpisane, czy oba. Metoda Protect wykonuje odpowiednią operację i bezpiecznie chroni dane. Dane szyfrowania tekstu generowane przez tę metodę można rozszyfrować tylko za pomocą Unprotect metody .

Parametr purposes jest opcjonalną listą powodów, dla których można zablokować tekst szyfrowania do określonego celu. Ten parametr umożliwia izolowanie operacji kryptograficznych wykonywanych przez różne podsystemy w aplikacji. Złośliwy klient nie powinien być w stanie uzyskać wyniku metody jednego podsystemu i podawać go jako dane wejściowe do metody innego podsystemu Protect Unprotect , co może naruszyć bezpieczeństwo aplikacji. Parametr purposes pomaga zapewnić, że chronione dane mogą być używane tylko przez składnik, który pierwotnie je wygenerował. Aplikacje powinny upewnić się, że każdy podsystem używa unikatowej purposes listy.

Aby na przykład chronić lub wyłączyć ochronę tokenu uwierzytelniania, można wywołać metodę przy użyciu kodu, takiego jak w poniższym przykładzie:

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

Aplikacje mogą dynamicznie generować purposes parametr. W takim przypadku prefiks wartości dostarczone przez użytkownika o stałej wartości (na przykład "Username: + nazwa użytkownika), aby zminimalizować ryzyko złośliwego klienta tworzenia danych wejściowych pasujących do tokenu używanego przez inną część systemu. Wszystkie dynamicznie generowane ciągi powinny znajdować się po stałych ciągach. Aby na przykład chronić lub wyłączyć ochronę wiadomości prywatnej powiązanej z określonym użytkownikiem, użyj kodu, takiego jak w poniższym przykładzie:

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

Po wywołaniu Unprotect metody wartość podana dla parametru purposes musi być tą samą wartością, która została podana do Protect metody. W przeciwnym razie operacja zakończy się niepowodzeniem CryptographicException z wyjątkiem.

Ustawienia konfiguracji wymagane dla MachineKeyCompatibilityMode.Framework45 tej metody są wymagane, nawet jeśli MachineKeySection.CompatibilityMode właściwość nie jest ustawiona na Framework45 tę opcję.

Dotyczy