EncryptedXml.AddKeyNameMapping(String, Object) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Anahtar adı ile simetrik anahtar veya asimetrik anahtar arasında eşleme tanımlar.
public:
void AddKeyNameMapping(System::String ^ keyName, System::Object ^ keyObject);
public void AddKeyNameMapping (string keyName, object keyObject);
member this.AddKeyNameMapping : string * obj -> unit
Public Sub AddKeyNameMapping (keyName As String, keyObject As Object)
Parametreler
- keyName
- String
ile eşlenecek keyObject
ad.
- keyObject
- Object
ile eşlenecek keyName
simetrik anahtar.
Özel durumlar
parametresinin keyName
değeridir null
.
-veya-
parametresinin keyObject
değeridir null
.
parametresinin keyObject
değeri bir RSA algoritması veya simetrik anahtar değildir.
Örnekler
Aşağıdaki kod örneğinde, bir XML belgesinin simetrik anahtar kullanılarak nasıl şifrelenmesi gösterilmektedir. Bu örnek, şifre çözme yönteminin uygun şifre çözme anahtarını bulmak için kullandığı şifrelenmiş XML belgesine bir anahtar adı ekler.
#using <System.Security.dll>
#using <System.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Security::Cryptography;
using namespace System::Security::Cryptography::Xml;
static void Encrypt( XmlDocument^ Doc, String^ ElementToEncrypt, SymmetricAlgorithm^ Alg, String^ KeyName )
{
// Check the arguments.
if ( Doc == nullptr )
throw gcnew ArgumentNullException( L"Doc" );
if ( ElementToEncrypt == nullptr )
throw gcnew ArgumentNullException( L"ElementToEncrypt" );
if ( Alg == nullptr )
throw gcnew ArgumentNullException( L"Alg" );
////////////////////////////////////////////////
// Find the specified element in the XmlDocument
// object and create a new XmlElemnt object.
////////////////////////////////////////////////
XmlElement^ elementToEncrypt = dynamic_cast<XmlElement^>(Doc->GetElementsByTagName( ElementToEncrypt )->Item( 0 ));
// Throw an XmlException if the element was not found.
if ( elementToEncrypt == nullptr )
{
throw gcnew XmlException( L"The specified element was not found" );
}
//////////////////////////////////////////////////
// Create a new instance of the EncryptedXml class
// and use it to encrypt the XmlElement with the
// symmetric key.
//////////////////////////////////////////////////
EncryptedXml^ eXml = gcnew EncryptedXml;
// Add the key mapping.
eXml->AddKeyNameMapping( KeyName, Alg );
// Encrypt the element.
EncryptedData^ edElement = eXml->Encrypt( elementToEncrypt, KeyName );
////////////////////////////////////////////////////
// Replace the element from the original XmlDocument
// object with the EncryptedData element.
////////////////////////////////////////////////////
EncryptedXml::ReplaceElement( elementToEncrypt, edElement, false );
}
static void Decrypt( XmlDocument^ Doc, SymmetricAlgorithm^ Alg, String^ KeyName )
{
// Check the arguments.
if ( Doc == nullptr )
throw gcnew ArgumentNullException( L"Doc" );
if ( Alg == nullptr )
throw gcnew ArgumentNullException( L"Alg" );
if ( KeyName == nullptr )
throw gcnew ArgumentNullException( L"KeyName" );
// Create a new EncryptedXml object.
EncryptedXml^ exml = gcnew EncryptedXml( Doc );
// Add the key name mapping.
exml->AddKeyNameMapping( KeyName, Alg );
// Decrypt the XML document.
exml->DecryptDocument();
}
int main()
{
// Create an XmlDocument object.
XmlDocument^ xmlDoc = gcnew XmlDocument;
// Load an XML file into the XmlDocument object.
try
{
xmlDoc->PreserveWhitespace = true;
xmlDoc->Load( L"test.xml" );
}
catch ( Exception^ e )
{
Console::WriteLine( e->Message );
}
// Create a new TripleDES key.
TripleDESCryptoServiceProvider^ tDESkey = gcnew TripleDESCryptoServiceProvider;
try
{
// Encrypt the "creditcard" element.
Encrypt( xmlDoc, L"creditcard", tDESkey, L"tDesKey" );
// Display the encrypted XML to the console.
Console::WriteLine( L"Encrypted XML:" );
Console::WriteLine();
Console::WriteLine( xmlDoc->OuterXml );
// Decrypt the "creditcard" element.
Decrypt( xmlDoc, tDESkey, L"tDesKey" );
// Display the encrypted XML to the console.
Console::WriteLine();
Console::WriteLine( L"Decrypted XML:" );
Console::WriteLine();
Console::WriteLine( xmlDoc->OuterXml );
}
catch ( Exception^ e )
{
Console::WriteLine( e->Message );
}
finally
{
// Clear the TripleDES key.
tDESkey->Clear();
}
}
using System;
using System.Xml;
using System.Security.Cryptography;
using System.Security.Cryptography.Xml;
class Program
{
static void Main(string[] args)
{
// Create an XmlDocument object.
XmlDocument xmlDoc = new XmlDocument();
// Load an XML file into the XmlDocument object.
try
{
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load("test.xml");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
// Create a new TripleDES key.
TripleDESCryptoServiceProvider tDESkey = new TripleDESCryptoServiceProvider();
try
{
// Encrypt the "creditcard" element.
Encrypt(xmlDoc, "creditcard", tDESkey, "tDesKey");
// Display the encrypted XML to the console.
Console.WriteLine("Encrypted XML:");
Console.WriteLine();
Console.WriteLine(xmlDoc.OuterXml);
// Decrypt the "creditcard" element.
Decrypt(xmlDoc, tDESkey, "tDesKey");
// Display the encrypted XML to the console.
Console.WriteLine();
Console.WriteLine("Decrypted XML:");
Console.WriteLine();
Console.WriteLine(xmlDoc.OuterXml);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
// Clear the TripleDES key.
tDESkey.Clear();
}
}
public static void Encrypt(XmlDocument Doc, string ElementToEncrypt, SymmetricAlgorithm Alg, string KeyName)
{
// Check the arguments.
if (Doc == null)
throw new ArgumentNullException("Doc");
if (ElementToEncrypt == null)
throw new ArgumentNullException("ElementToEncrypt");
if (Alg == null)
throw new ArgumentNullException("Alg");
////////////////////////////////////////////////
// Find the specified element in the XmlDocument
// object and create a new XmlElemnt object.
////////////////////////////////////////////////
XmlElement elementToEncrypt = Doc.GetElementsByTagName(ElementToEncrypt)[0] as XmlElement;
// Throw an XmlException if the element was not found.
if (elementToEncrypt == null)
{
throw new XmlException("The specified element was not found");
}
//////////////////////////////////////////////////
// Create a new instance of the EncryptedXml class
// and use it to encrypt the XmlElement with the
// symmetric key.
//////////////////////////////////////////////////
EncryptedXml eXml = new EncryptedXml();
// Add the key mapping.
eXml.AddKeyNameMapping(KeyName, Alg);
// Encrypt the element.
EncryptedData edElement = eXml.Encrypt(elementToEncrypt, KeyName);
////////////////////////////////////////////////////
// Replace the element from the original XmlDocument
// object with the EncryptedData element.
////////////////////////////////////////////////////
EncryptedXml.ReplaceElement(elementToEncrypt, edElement, false);
}
public static void Decrypt(XmlDocument Doc, SymmetricAlgorithm Alg, string KeyName)
{
// Check the arguments.
if (Doc == null)
throw new ArgumentNullException("Doc");
if (Alg == null)
throw new ArgumentNullException("Alg");
if (KeyName == null)
throw new ArgumentNullException("KeyName");
// Create a new EncryptedXml object.
EncryptedXml exml = new EncryptedXml(Doc);
// Add the key name mapping.
exml.AddKeyNameMapping(KeyName, Alg);
// Decrypt the XML document.
exml.DecryptDocument();
}
}
Imports System.Xml
Imports System.Security.Cryptography
Imports System.Security.Cryptography.Xml
Module Program
Sub Main(ByVal args() As String)
' Create an XmlDocument object.
Dim xmlDoc As New XmlDocument()
' Load an XML file into the XmlDocument object.
Try
xmlDoc.PreserveWhitespace = True
xmlDoc.Load("test.xml")
Catch e As Exception
Console.WriteLine(e.Message)
End Try
' Create a new TripleDES key.
Dim tDESkey As New TripleDESCryptoServiceProvider()
Try
' Encrypt the "creditcard" element.
Encrypt(xmlDoc, "creditcard", tDESkey, "tDesKey")
' Display the encrypted XML to the console.
Console.WriteLine("Encrypted XML:")
Console.WriteLine()
Console.WriteLine(xmlDoc.OuterXml)
' Decrypt the "creditcard" element.
Decrypt(xmlDoc, tDESkey, "tDesKey")
' Display the encrypted XML to the console.
Console.WriteLine()
Console.WriteLine("Decrypted XML:")
Console.WriteLine()
Console.WriteLine(xmlDoc.OuterXml)
Catch e As Exception
Console.WriteLine(e.Message)
Finally
' Clear the TripleDES key.
tDESkey.Clear()
End Try
End Sub
Sub Encrypt(ByVal Doc As XmlDocument, ByVal ElementToEncrypt As String, ByVal Alg As SymmetricAlgorithm, ByVal KeyName As String)
' Check the arguments.
If Doc Is Nothing Then
Throw New ArgumentNullException("Doc")
End If
If ElementToEncrypt Is Nothing Then
Throw New ArgumentNullException("ElementToEncrypt")
End If
If Alg Is Nothing Then
Throw New ArgumentNullException("Alg")
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''
' Find the specified element in the XmlDocument
' object and create a new XmlElemnt object.
'''''''''''''''''''''''''''''''''''''''''''''''''''
Dim elementEncrypt As XmlElement = Doc.GetElementsByTagName(ElementToEncrypt)(0)
' Throw an XmlException if the element was not found.
If ElementToEncrypt Is Nothing Then
Throw New XmlException("The specified element was not found")
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''
' Create a new instance of the EncryptedXml class
' and use it to encrypt the XmlElement with the
' symmetric key.
'''''''''''''''''''''''''''''''''''''''''''''''''''
Dim eXml As New EncryptedXml()
' Add the key mapping.
eXml.AddKeyNameMapping(KeyName, Alg)
' Encrypt the element.
Dim edElement As EncryptedData = eXml.Encrypt(elementEncrypt, KeyName)
'''''''''''''''''''''''''''''''''''''''''''''''''''
' Replace the element from the original XmlDocument
' object with the EncryptedData element.
'''''''''''''''''''''''''''''''''''''''''''''''''''
EncryptedXml.ReplaceElement(elementEncrypt, edElement, False)
End Sub
Sub Decrypt(ByVal Doc As XmlDocument, ByVal Alg As SymmetricAlgorithm, ByVal KeyName As String)
' Check the arguments.
If Doc Is Nothing Then
Throw New ArgumentNullException("Doc")
End If
If Alg Is Nothing Then
Throw New ArgumentNullException("Alg")
End If
If KeyName Is Nothing Then
Throw New ArgumentNullException("KeyName")
End If
' Create a new EncryptedXml object.
Dim exml As New EncryptedXml(Doc)
' Add the key name mapping.
exml.AddKeyNameMapping(KeyName, Alg)
' Decrypt the XML document.
exml.DecryptDocument()
End Sub
End Module
Açıklamalar
yöntemi, AddKeyNameMapping simetrik anahtarı veya asimetrik anahtarı dize adıyla eşlemenize olanak tanır. Bu yöntem, ve keyObject
parametrelerinin keyName
değerlerini geçerli anahtar adı eşlemeleri tablosuna ekler.
ClearKeyNameMappings Anahtar adı eşlemeleri tablosunu temizlemek için yöntemini kullanın.