Nwlapcug.com


Come crittografare un File XML a livello di programmazione

Come crittografare un File XML a livello di programmazione


Le imprese spesso si basano su XML per lo scambio di dati, ma condivisione informazioni arriva a un rischio. Numeri di carta di credito, numeri di telefono, indirizzi, nomi e informazioni proprietarie aziendali del cliente costituiscono alcune aree di dati sensibili. Quello che potrebbe essere opportuno condividere con un partner, cliente o cliente, potrebbe non essere sicuro con un altro. Fortunatamente, i dati XML possono essere crittografati per proteggerlo. La procedura riportata di seguito utilizza il .net Framework e il linguaggio c#, ma tecniche di crittografia XML esistono in Java e altri Framework.

Istruzioni

Crittografia e decrittografia di un File XML

1

Creare un documento XML che contiene dati sensibili:

< ordine >
< elementi >
< item > 444444
< quantità > 3 < / quantità >
< CostPerItem > 50.00 < / CostPerItem >
< / item >
< / articoli >
< CreditCardNumber > 0000123456789000 < / CreditCardNumber >
Visa di < CreditCardType > < / CreditCardType >
< / ordine >

2

Salvare il file come \"Order.xml\" in una cartella denominata ordini.

3

Creare un'applicazione console in Visual Studio. Aprire Visual Studio. Selezionare \"File--> nuovo progetto, \" e quindi selezionare l'icona per \"Console applicazione. \" aggiungere al progetto un riferimento a System. Security. Aggiungere il seguente \"using\" istruzioni all'inizio del file di programma:

utilizzando il sistema
VAI
utilizzando System.Security.Cryptography
VAI
utilizzando Cryptography
VAI
utilizzando System. Text
VAI
using System. XML;

4

Leggere il file XML. All'interno del metodo Main del programma, è necessario creare un'istanza di un oggetto XmlDocument e caricare il file XML in esso:

XmlDocument xmlDoc = new XmlDocument)
VAI

xmlDoc.Load(\&quot;c:\\\\Orders\\\\order.xml\&quot;);5

Creare una chiave di crittografia. Ci sono un numero da scegliere, di variare i punti di forza e che impiegano diversi tipi di chiavi (vedere \"Cryptography a. Net\"nella sezione risorse). Questo esempio utilizza la crittografia TripleDES:

EncryptionKey TripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider ();

6

Isolare un elemento xml dal file per crittografare e creare un'istanza di un oggetto XmlElement per contenerlo. Per crittografare l'intero file, selezionare l'elemento radice. In questo esempio, la radice è il nodo \"Order\":

XmlElement orderElem = xmlDoc.SelectSingleNode(\"Order\") as XmlElement
VAI

Se si desidera crittografare solo il nodo di CreditCardInformation, si scriverebbe come questo:

XmlElement orderElem = xmlDoc.SelectSingleNode(\"Order/CreditCardInformation\") as XmlElement;

7

Crittografare i dati utilizzando la chiave di crittografia creata in precedenza:

EncryptedXml encXml = nuovo EncryptedXml(xmlDoc)
VAI

byte[] encryptedOrder = encXml.EncryptData(orderElem, encryptionKey, false);8

Creare un'istanza di un oggetto EncryptedData. Insieme è proprietà URI per sia gli elementi di dati xml crittografati e l'algoritmo di crittografia:

EncryptedData encryptedData = new EncryptedData
VAI

encryptedData.Type = EncryptedXml.XmlEncElementUrl

VAI

encryptedData.EncryptionMethod = new

EncryptionMethod(EncryptedXml.XmlEncTripleDESUrl);

9

Impostare la proprietà CipherValue dell'oggetto EncryptedData ai dati crittografati sopra:

encryptedData.CipherData = nuovo CipherData()
VAI

encryptedData.CipherData.CipherValue = encryptedOrder;10

Sostituire il contenuto del nodo xml con il contenuto crittografato:

ReplaceElement (orderElem, encryptedData, false);

11

Salvare i dati xml:

xmlDoc.Save(\"c:\\Orders\\encryptedOrder.xml\");

12

Per decrittografare i dati crittografati, è essenzialmente invertire il processo. In questo esempio, i dati verranno decrittografati nello stesso programma e utilizzano la stessa variabile come la chiave crittografata. In una situazione reale, uno sarebbe inviare la chiave al destinatario in un file separato da xml crittografato (o condividerlo in qualche altro modo). Segue il codice di decrittazione:

Ottenere i dati dal nome tag

XmlElement encOrderElem = xmlDoc.GetElementsByTagName(\&quot;EncryptedData\&quot;)[0] as XmlElement

VAI

Dati di carico in un EncryptedData eccepito

EncryptedData encData = new EncryptedData()

VAI

encData.LoadXml(encOrderElem)

VAI

Decrittografare i dati utilizzando la chiave creata in precedenza

EncryptedXml encryptedXml = new EncryptedXml()

VAI

byte[] decryptedOrder = encryptedXml.DecryptData(encData, encryptionKey)

VAI

// Replace the encrypted data with decrypted data in your xml document
encryptedXml.ReplaceData(encOrderElem, decryptedOrder)

VAI

// Save another file
xmlDoc.Save(\&quot;c:\\\\Orders\\\\decryptedOrder.xml\&quot;);

Consigli & Avvertenze

  • Quanto sopra è un esempio molto semplice di ciò che può essere un processo estremamente complesso. La crittografia è una vasta area degna di ampio studio. Vedere le sezioni di risorse e riferimenti di questo articolo per i collegamenti a comprendere.
  • Il codice precedente si presuppone di aver messo il file XML di esempio in una cartella denominata ordini, che risiede nella directory principale di un'unità con lettere \"C.\" se la configurazione del sistema è diverso o che hai creato i file di esempio in altre cartelle, ricordarsi di modificare di conseguenza i percorsi dei file.