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é dešifrovat vrácený šifrovací text.

Návraty

Byte[]

Šifrová data.

Výjimky

Parametr userData má hodnotu null.

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

Poznámky

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

Parametr purposes je volitelný seznam důvodů, které můžou zamknout šifru konkrétnímu účelu. Tento parametr umožňuje izolovat kryptografické operace prováděné různými subsystémy v rámci aplikace. Škodlivý klient by neměl mít možnost získat výsledek metody jednoho subsystému a dát ho jako vstup do metody jiného subsystému Protect Unprotect , což by mohlo ohrozit zabezpečení aplikace. Parametr purposes pomáhá zajistit, aby chráněná data používala pouze komponenta, 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ě se předpona uživatelem zadaných hodnot s pevnou hodnotou (například "Username: + uživatelské jméno) minimalizuje riziko škodlivého klientského vytváření vstupu, který odpovídá tokenu používanému jinou částí systému. Všechny dynamicky generované řetězce by měly pocházet po pevných řetězcích. Například k ochraně nebo zrušení ochrany 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 volání metody musí být hodnota, která je k dispozici 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ány pro tuto metodu, i když MachineKeySection.CompatibilityMode vlastnost není nastavena Framework45 na tuto možnost.

Platí pro