Autor Beitrag
theend
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mo 28.01.08 21:55 
hy,

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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 29.01.08 11:30 
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:
  • DataSet.GetXml-Methode liefert den xml-Inhalt als String.
  • Dieser String wird verschlüsselt; Rückgabe ist wieder ein String.
  • Der so erzeugte String wird als einfache Textdatei gespeichert, z.B. mit File.WriteAllText().

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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: 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