ProtectedData Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje metody pro šifrování a dešifrování dat. Tato třída se nemůže dědit.
public ref class ProtectedData abstract sealed
public ref class ProtectedData sealed
public static class ProtectedData
public sealed class ProtectedData
type ProtectedData = class
Public Class ProtectedData
Public NotInheritable Class ProtectedData
- Dědičnost
-
ProtectedData
Příklady
Následující příklad ukazuje, jak používat ochranu dat.
using System;
using System.Security.Cryptography;
public class DataProtectionSample
{
// Create byte array for additional entropy when using Protect method.
static byte [] s_additionalEntropy = { 9, 8, 7, 6, 5 };
public static void Main()
{
// Create a simple byte array containing data to be encrypted.
byte [] secret = { 0, 1, 2, 3, 4, 1, 2, 3, 4 };
//Encrypt the data.
byte [] encryptedSecret = Protect( secret );
Console.WriteLine("The encrypted byte array is:");
PrintValues(encryptedSecret);
// Decrypt the data and store in a byte array.
byte [] originalData = Unprotect( encryptedSecret );
Console.WriteLine("{0}The original data is:", Environment.NewLine);
PrintValues(originalData);
}
public static byte [] Protect( byte [] data )
{
try
{
// Encrypt the data using DataProtectionScope.CurrentUser. The result can be decrypted
// only by the same current user.
return ProtectedData.Protect( data, s_additionalEntropy, DataProtectionScope.CurrentUser );
}
catch (CryptographicException e)
{
Console.WriteLine("Data was not encrypted. An error occurred.");
Console.WriteLine(e.ToString());
return null;
}
}
public static byte [] Unprotect( byte [] data )
{
try
{
//Decrypt the data using DataProtectionScope.CurrentUser.
return ProtectedData.Unprotect( data, s_additionalEntropy, DataProtectionScope.CurrentUser );
}
catch (CryptographicException e)
{
Console.WriteLine("Data was not decrypted. An error occurred.");
Console.WriteLine(e.ToString());
return null;
}
}
public static void PrintValues( Byte[] myArr )
{
foreach ( Byte i in myArr )
{
Console.Write( "\t{0}", i );
}
Console.WriteLine();
}
}
Imports System.Security.Cryptography
Public Class DataProtectionSample
' Create byte array for additional entropy when using Protect method.
Private Shared s_additionalEntropy As Byte() = {9, 8, 7, 6, 5}
Public Shared Sub Main()
' Create a simple byte array containing data to be encrypted.
Dim secret As Byte() = {0, 1, 2, 3, 4, 1, 2, 3, 4}
'Encrypt the data.
Dim encryptedSecret As Byte() = Protect(secret)
Console.WriteLine("The encrypted byte array is:")
PrintValues(encryptedSecret)
' Decrypt the data and store in a byte array.
Dim originalData As Byte() = Unprotect(encryptedSecret)
Console.WriteLine("{0}The original data is:", Environment.NewLine)
PrintValues(originalData)
End Sub
Public Shared Function Protect(ByVal data() As Byte) As Byte()
Try
' Encrypt the data using DataProtectionScope.CurrentUser. The result can be decrypted
' only by the same current user.
Return ProtectedData.Protect(data, s_additionalEntropy, DataProtectionScope.CurrentUser)
Catch e As CryptographicException
Console.WriteLine("Data was not encrypted. An error occurred.")
Console.WriteLine(e.ToString())
Return Nothing
End Try
End Function
Public Shared Function Unprotect(ByVal data() As Byte) As Byte()
Try
'Decrypt the data using DataProtectionScope.CurrentUser.
Return ProtectedData.Unprotect(data, s_additionalEntropy, DataProtectionScope.CurrentUser)
Catch e As CryptographicException
Console.WriteLine("Data was not decrypted. An error occurred.")
Console.WriteLine(e.ToString())
Return Nothing
End Try
End Function
Public Shared Sub PrintValues(ByVal myArr() As [Byte])
Dim i As [Byte]
For Each i In myArr
Console.Write(vbTab + "{0}", i)
Next i
Console.WriteLine()
End Sub
End Class
Poznámky
Tato třída poskytuje přístup k rozhraní DATA Protection API (DPAPI) dostupnému v Windows operačních systémech. Jedná se o službu, která je poskytována operačním systémem a nevyžaduje další knihovny. Poskytuje ochranu pomocí přihlašovacích údajů uživatele nebo počítače k šifrování nebo dešifrování dat.
Important
Vzhledem k tomu, že závisí na rozhraní DPAPI, podporuje se třída ProtectedData pouze na platformě Windows. Jeho použití na .NET Core na jiných platformách než Windows vyvolá PlatformNotSupportedException.
Třída se skládá ze dvou obálk pro nespravované rozhraní DPAPI Protect a Unprotect. Tyto dvě metody lze použít k šifrování a dešifrování dat, jako jsou hesla, klíče a připojovací řetězce.
Pokud tyto metody používáte během zosobnění, může se zobrazit následující chyba: Klíč není platný pro použití v zadaném stavu. K tomu dochází, protože rozhraní DPAPI ukládá klíčová data do profilů uživatelů. Pokud se profil nenačte, rozhraní DPAPI nebude moct dešifrování provést. Chcete-li této chybě zabránit, načtěte profil uživatele, kterého chcete zosobnit před voláním některé z metod. Použití rozhraní DPAPI s zosobněním může způsobit významnou komplikaci a vyžaduje pečlivé volby návrhu.
Metody
| Name | Description |
|---|---|
| Protect(Byte[], Byte[], DataProtectionScope) |
Zašifruje data v zadaném bajtovém poli a vrátí bajtovou matici, která obsahuje šifrovaná data. |
| Protect(ReadOnlySpan<Byte>, DataProtectionScope, ReadOnlySpan<Byte>) |
Zašifruje data v zadaném bajtovém rozsahu a vrátí pole bajtů, které obsahuje šifrovaná data. |
| Protect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, ReadOnlySpan<Byte>) |
Zašifruje data v zadané vyrovnávací paměti a zapíše zašifrovaná data do cílové vyrovnávací paměti. |
| TryProtect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, Int32, ReadOnlySpan<Byte>) |
Zašifruje data v zadané vyrovnávací paměti a zapíše zašifrovaná data do cílové vyrovnávací paměti. |
| TryUnprotect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, Int32, ReadOnlySpan<Byte>) |
Dešifruje data v zadané vyrovnávací paměti a zapíše dešifrovaná data do cílové vyrovnávací paměti. |
| Unprotect(Byte[], Byte[], DataProtectionScope) |
Dešifruje data v zadaném bajtovém poli a vrátí bajtovou matici, která obsahuje dešifrovaná data. |
| Unprotect(ReadOnlySpan<Byte>, DataProtectionScope, ReadOnlySpan<Byte>) |
Dešifruje data v zadaném bajtovém poli a vrátí bajtovou matici, která obsahuje dešifrovaná data. |
| Unprotect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, ReadOnlySpan<Byte>) |
Dešifruje data v zadané vyrovnávací paměti a zapíše dešifrovaná data do cílové vyrovnávací paměti. |