Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Dataset.writexml() => verschlüsselt speichern


theend - Mo 28.01.08 21:55
Titel: Dataset.writexml() => verschlüsselt speichern
hy,

Ich habe Daten in einem DataSet welche ich nach dem beenden der Application mittels


C#-Quelltext
1:
Dataset.Writexml(filename);                    


speichere

nun möchte ich aber das diese daten verschlüsselt gespeichert werden.

das selbe dan beim wieder laden am start entschlüselt werden.


Die Daten sollen auf der Festplatte (also als files) immer verschlüsselt gespeichert sein.


gibt es hier eine möglichkeit?


JüTho - Di 29.01.08 11:30
Titel: Re: Dataset.writexml() => verschlüsselt speichern
user profile icontheend hat folgendes geschrieben:
Die Daten sollen auf der Festplatte (also als files) immer verschlüsselt gespeichert sein.

gibt es hier eine möglichkeit?

Ja. Folgende Schritte musst Du gehen:

Zur Verschlüsselung bietet NET viele verschiedene Möglichkeiten. Ich habe vor vielen Jahren aus einem Delphi-Lehrbuch folgendes Verfahren abgeleitet, das identisch zum Verschlüsseln und zum Entschlüsseln geeignet ist:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private static string CodingBytes(System.String source) {
  //  string in Byte-Array konvertieren
  byte[] ajTemp = new byte[source.Length];
  ajTemp = System.Text.Encoding.GetEncoding(1252).GetBytes(source);
  //  Zeichen für Zeichen konvertieren
  forint x1=0; x1 < ajTemp.Length; x1++ )
    ajTemp[x1] = (byte)(ajTemp[x1] ^ ((x1 % 9)*3+5) );
  return System.Text.Encoding.GetEncoding(1252).GetString(ajTemp);
}

Das Einlesen geht im Prinzip genauso. Allerdings gibt es kein Gegenstück zu GetXml. Stattdessen musst den entschlüsselten String als Stream an die ReadXml-Methode übergeben.

Gruß Jürgen


Kha - Di 29.01.08 12:08

Wenn es nur ums temporäre Speichern geht, würde ich kein XML benutzen.
  1. Datei per FileStream öffnen
  2. Daraus einen CryptoStream mit Rijndael/whatever erstellen
  3. Das DataSet per BinaryFormatter in den CryptoStream serialisieren
  4. fertig


theend - Di 29.01.08 14:45

user profile iconKhabarakh hat folgendes geschrieben:
Wenn es nur ums temporäre Speichern geht, würde ich kein XML benutzen.
  1. Datei per FileStream öffnen
  2. Daraus einen CryptoStream mit Rijndael/whatever erstellen
  3. Das DataSet per BinaryFormatter in den CryptoStream serialisieren
  4. fertig


ich habe zwei arten von Daten die gespeichert werden sollen, einmal programmdaten die vom user geändert werden können (liste mit verschiedenen inhalten die im porgram verarbeitet werden, dazu gibt es im Porgramm auch die möglichkeit) diese werden unverschlüsselt gespeichert.

und dan gibt es noch die sachen die cih nur verschlüsselt speichern will, hierbei geht es um Programmeinstellungen und Userdaten, die nur mit diesem Programm genutzt werden dürfen und sollen.

Ich werde mal die beiden MEthoden versuchen, danke recht herzlich für die tips