ProtectedData.Unprotect(Byte[], Byte[], DataProtectionScope) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Ontsleutelt de gegevens in een opgegeven bytematrix en retourneert een bytematrix die de ontsleutelde gegevens bevat.
public:
static cli::array <System::Byte> ^ Unprotect(cli::array <System::Byte> ^ encryptedData, cli::array <System::Byte> ^ optionalEntropy, System::Security::Cryptography::DataProtectionScope scope);
public static byte[] Unprotect(byte[] encryptedData, byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope);
static member Unprotect : byte[] * byte[] * System.Security.Cryptography.DataProtectionScope -> byte[]
Public Shared Function Unprotect (encryptedData As Byte(), optionalEntropy As Byte(), scope As DataProtectionScope) As Byte()
Parameters
- encryptedData
- Byte[]
Een bytematrix met gegevens die zijn versleuteld met behulp van de Protect(Byte[], Byte[], DataProtectionScope) methode.
- optionalEntropy
- Byte[]
Een optionele extra bytematrix die is gebruikt om de gegevens te versleutelen of null als de extra bytematrix niet is gebruikt.
- scope
- DataProtectionScope
Een van de opsommingswaarden waarmee het bereik van gegevensbeveiliging wordt opgegeven die is gebruikt voor het versleutelen van de gegevens.
Retouren
Een bytematrix die de ontsleutelde gegevens vertegenwoordigt.
Uitzonderingen
De encryptedData parameter is null.
De ontsleuteling is mislukt.
Het besturingssysteem biedt geen ondersteuning voor deze methode.
Geen geheugen meer.
.NET Core en .NET 5+ alleen: aanroepen naar de methode Unprotect worden alleen ondersteund op Windows besturingssystemen.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u gegevensbeveiliging gebruikt.
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
Opmerkingen
Deze methode kan worden gebruikt om de beveiliging van gegevens op te heffen die zijn versleuteld met behulp van de Protect methode. Als de parameter tijdens de optionalEntropy versleuteling is gebruikt, moet deze worden opgegeven om de gegevens te ontsleutelen.
Note
Als u deze methode tijdens imitatie gebruikt, wordt mogelijk de volgende fout weergegeven: 'Sleutel is niet geldig voor gebruik in de opgegeven status'. Als u deze fout wilt voorkomen, laadt u het profiel van de gebruiker die u wilt imiteren voordat u de methode aanroept.