2 Stimmen

c# xml datei verschlüsseln

Wie kann ich eine XML-Datei am einfachsten verschlüsseln? Es handelt sich um eine Datei, die für einige Konfigurationen verwendet wird, und ich möchte nicht, dass jemand damit herumspielt. Sicherheit ist kein Thema, da es sich um ein privates Tool handelt.

6voto

Onkelborg Punkte 3887

Wenn Ihnen die Sicherheit egal ist, speichern Sie die Datei einfach zusammen mit einem Hash. Dh:

Ihre.xml und deine.xml.hash

Sie können zum Beispiel System.Security.Cryptography.MD5Managed verwenden. Es geht nur darum, die xml-Datei zu speichern und dann einen Hash der Datei selbst zu speichern. Beim Lesen berechnen Sie einfach den Hash, vergleichen ihn mit dem gespeicherten Wert und verwenden dann Ihre XML-Datei als reguläre Datei.

Natürlich sind die Informationen in der xml-Datei nicht verschlüsselt, man kann sie lesen, aber wenn Sie die Datei bearbeiten, ist der Hash nicht korrekt und Ihr Programm wird den Versuch entdecken. Halten Sie es einfach :)

3voto

adw Punkte 4647

Wenn Sie die Änderung nur erschweren wollen, senden Sie sie durch eine DeflateStream . Als zusätzlicher Vorteil wird die Datei kleiner sein.

1voto

Steve Townsend Punkte 52288

DPAPI ist der einfachste Weg, Dinge in Windows-Systemen zu schützen - siehe ProtectedData.Protect für den Anfang.

0voto

Russell McClure Punkte 4751

Ich würde wahrscheinlich einfach die gesamte Datei durch diese Klasse laufen lassen, die die DPAPI umhüllt, bevor ich sie lese/schreibe. Die resultierende Ausgabe wird kodiert, so dass sie als Textdatei ausgegeben werden kann:

using System;
using System.Security.Cryptography;
using System.Text;

/// <summary>
/// used for encryption and decryption
/// </summary>
public static class DataProtector
{
   private const string EntropyValue = "secret";

   /// <summary>
   /// Encrypts a string using the DPAPI.
   /// </summary>
   /// <param name="stringToEncrypt">The string to encrypt.</param>
   /// <returns>encrypt data</returns>
   public static string EncryptData(string stringToEncrypt)
   {
      byte[] encryptedData = ProtectedData.Protect(Encoding.Unicode.GetBytes(stringToEncrypt), Encoding.Unicode.GetBytes(EntropyValue), DataProtectionScope.LocalMachine);
      return Convert.ToBase64String(encryptedData);
   }

   /// <summary>
   /// Decrypts a string using the DPAPI.
   /// </summary>
   /// <param name="stringToDecrypt">The string to decrypt.</param>
   /// <returns>decrypted data</returns>
  public static string DecryptData(string stringToDecrypt)
   {
      byte[] decryptedData = ProtectedData.Unprotect(Convert.FromBase64String(stringToDecrypt), Encoding.Unicode.GetBytes(EntropyValue), DataProtectionScope.LocalMachine);
      return Encoding.Unicode.GetString(decryptedData);
   }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X