Sdílet prostřednictvím


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

Definice

Chrání zadaná data tím, že je zašifrujete nebo podepíšete.

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[]

Data, která chcete chránit. Tato data se předávají jako prostý text.

purposes
String[]

Seznam účelů pro data. Pokud je tato hodnota zadána, musí být stejný seznam předán Unprotect(Byte[], String[]) metodě, aby bylo možné šifrovat vrácený šifrový text.

Návraty

Byte[]

Šifrová data.

Výjimky

Parametr userData má hodnotu null.

Pole účelu obsahuje jednu nebo více prázdných položek.

Poznámky

Tato metoda nahrazuje metodu Encode , která vyžaduje, aby volající určil, zda mají být data prostého textu zašifrována, podepsána nebo obojí. Metoda Protect provede příslušnou operaci a bezpečně chrání data. Šifrová data vytvořená touto metodou mohou být dešifrována pouze metodou Unprotect .

Parametr purposes je volitelný seznam důvodů, které můžou šifru uzamknout pro konkrétní účel. Tento parametr umožňuje izolovat kryptografické operace prováděné různými subsystémy v rámci aplikace. Škodlivý klient by neměl být schopen získat výsledek metody jednoho subsystému Protect a ho ho zadávat jako vstup do metody jiného Unprotect subsystému, což by mohlo ohrozit zabezpečení aplikace. Tento purposes parametr pomáhá zajistit, aby chráněná data byla použita pouze komponentou, která je původně vygenerovala. Aplikace by měly zajistit, aby každý subsystém používal jedinečný purposes seznam.

Pokud chcete například chránit nebo zrušit ochranu ověřovacího tokenu, můžete metodu volat pomocí kódu jako v následujícím příkladu:

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

Aplikace můžou parametr dynamicky generovat purposes . V takovém případě předpona uživatelem zadaných hodnot s pevnou hodnotou (například "Username: + uživatelské jméno), aby se minimalizovalo riziko škodlivého klientského vytvoření vstupu, který odpovídá tokenu používanému jinou částí systému. Všechny dynamicky generované řetězce by měly po pevných řetězcích pocházet. Pokud například chcete chránit nebo zrušit ochranu soukromé zprávy, která je svázaná s konkrétním uživatelem, použijte kód podobný následujícímu příkladu:

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

Unprotect Při zavolání metody musí být hodnota zadaná pro purposes parametr stejná hodnota, která byla poskytnuta metoděProtect. Jinak operace selže s CryptographicException výjimkou.

Pro tuto metodu MachineKeyCompatibilityMode.Framework45 jsou vyžadována nastavení konfigurace, která jsou požadována pro tuto metodu, i když MachineKeySection.CompatibilityMode vlastnost není nastavena na Framework45 tuto možnost.

Platí pro