tutorials.de Buch-Aktion 02/2012
Like Tree2Danke
  • 1 Beitrag von Norbert Eder
  • 1 Beitrag von napstermania
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1581
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Xervos
    Xervos Xervos ist offline Mitglied Silber
    Registriert seit
    May 2010
    Beiträge
    93
    Hallo Leute,

    Ich arbeite gerade an einem Programm mit dem man Immobilien auf eine Homepage stellen kann, diese bearbeiten, löschen und Soweiter. Da ich nicht will das jeder in das Programm einsteigen kann habe ich mir überlegt ich mache einen login die auf eine XML zugreift. In dieser XML soll es mehrere Acoounts geben zb. User A darf nur die Fertigen angebote lesen, User B darf nicht zu lesen sondern auch neue anlegen und bestehende Bearbeiten. User C darf alles machen (darunter zählt auch neue User anlegen usw.) ich habe mir dann überlegt ich mache Accounts und weiße denen gewisse Rechte zu (schreiben, lesen, löschen, Bearbeiten usw.) mit desen hilfe ich dann im Programm steuer welche Formulare usw. zur verfügung stehen. Wenn man das Programm startet kommt zu einem login wo man Username und Passwort eingeben soll. Nach drücken des login button soll eine XML datei im Hintergrund abgerufen werden, geprüft werden ob username und passwort überein stimmen, ist das der Fall werden noch die Rechte geprüft, gesetzt und dann erfolgt der Login. Die XML sollte natürlich wieder verschlüsselt und geschlossen werden wenn das alles gemacht wurde (auch bei falschen login). Ich habe im Internet was von einem XMLWriter gelesen nur bin ich mir nicht sicher wie ich das mit Rijndael verschlüsselung koppeln kann.

    Das verschlüsseln von Txt dateien funktioniert super und auch das entschlüsseln nur brauch ich eben eine XML datei. Ich will in Zukunft nicht nur Accountdaten in einer XML datei speichern sondern auch Versions hinweise usw. (die erweiterungen sind hier echt viel). Ich hänge mal einfach meine Klasse hier rein die das entschlüsseln und verschlüsseln übernimmt.

    Das ist im Grunde das beispiel von MSDN nur gering angepasst

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    
    public static void EncryptTextToFile(String Data, String FileName, byte[] Key, byte[] IV)
            {
                try
                {
                    // Create or open the specified file.
                    FileStream fStream = File.Open(FileName, FileMode.Create);
     
                    // Create a new Rijndael object.
                    Rijndael RijndaelAlg = Rijndael.Create();
                    RijndaelAlg.IV = IV;
                    RijndaelAlg.Key = Key;
     
                    // Create a CryptoStream using the FileStream 
                    // and the passed key and initialization vector (IV).
                    CryptoStream cStream = new CryptoStream(fStream,
                        RijndaelAlg.CreateEncryptor(Key, IV),
                        CryptoStreamMode.Write);
     
                    // Create a StreamWriter using the CryptoStream.
                    StreamWriter sWriter = new StreamWriter(cStream);
     
                    try
                    {
                        // Write the data to the stream 
                        // to encrypt it.
                        sWriter.WriteLine(Data);
                       
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("An error occurred: {0}", e.Message);
                    }
                    finally
                    {
                        // Close the streams and
                        // close the file.
                        sWriter.Close();
                        cStream.Close();
                        fStream.Close();
                    }
     
                }
                catch (CryptographicException e)
                {
                    Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
                }
                catch (UnauthorizedAccessException e)
                {
                    Console.WriteLine("A file error occurred: {0}", e.Message);
                }
                catch (Exception e)
                {
     
                    Console.WriteLine("An error occurred: {0}", e.Message);
                }
              
     
            }
     
      
        public static string DecryptTextFromFile(String FileName, byte[] Key, byte[] IV)
        {
            try
            {
                // Create or open the specified file. 
                FileStream fStream = File.Open(FileName, FileMode.Open);
     
                // Create a new Rijndael object.
                Rijndael RijndaelAlg = Rijndael.Create();
                RijndaelAlg.IV = IV;
                RijndaelAlg.Key = Key;
     
                // Create a CryptoStream using the FileStream 
                // and the passed key and initialization vector (IV).
                CryptoStream cStream = new CryptoStream(fStream,
                    RijndaelAlg.CreateDecryptor(Key, IV),
                    CryptoStreamMode.Read);
     
                // Create a StreamReader using the CryptoStream.
                StreamReader sReader = new StreamReader(cStream);
     
                string val = null;
     
                try
                {
                    // Read the data from the stream 
                    // to decrypt it.
                    while (!sReader.EndOfStream)
                    {
                        val = val + sReader.ReadLine() + "\r\n";
                    }
                    
     
     
                }
                catch (Exception e)
                {
     
                    Console.WriteLine("An error occurred: {0}", e.Message);
                }
                finally
                {
                    // Close the streams and
                    // close the file.
                    sReader.Close();
                    cStream.Close();
                    fStream.Close();
                }
               
     
                // Return the string. 
                return val;
            }
            catch (CryptographicException e)
            {
                Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
                return null;
            }
            catch (UnauthorizedAccessException e)
            {
                Console.WriteLine("A file error occurred: {0}", e.Message);
                return null;
            }
            catch (Exception e)
            {
     
                Console.WriteLine("An error occurred: {0}", e.Message);
                return e.Message;
            }
        }

    wie gesagt das mit einer File klappt super. Wie kann ich das jetzt umschreiben das ich eine XML verschlüsselt schreiben kann. Noch eine Weitere Frage ich parse ich das ganze dann durch ?

    Danke für eure Hilfe

    lg
    Geändert von Xervos (18.05.10 um 08:20 Uhr)
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Wieso nicht für das Tool und die Anmeldung an der Website denselben Mechanismus wählen? D.h. du könntest ein Webservice anbieten, welches die Anmeldung vornimmt. Dann ersparst du es dir, für jede Programm-Installation ein Passwort-File mitzuliefern. Zusätzlich können Logins zentral gespeichert/gesteuert werden. Auch Änderungen an Rollen etc. wäre wesentlich einfacher zu verwalten.
    Xervos bedankt sich. 

  3. #3
    napstermania napstermania ist offline Mitglied Silber
    Registriert seit
    Jul 2004
    Ort
    Deutschland
    Beiträge
    95
    Hallo,

    die Idee mit der zentralen Datenhaltung ist auf jeden Fall gut. Dazu würde ich dir auch raten.

    Zu deiner XML File. Eigentlich ist die XML File auch nur eine normale Datei. Wenn du also den Inhalt Zeilenweise Ver-, bzw. Entschlüsselst sollte es keine probleme.
    Um eine XML Datei parsen zu können kannst du natürlich die XMLReader Klasse benutzten, welche ich allerding heutzutage schon fast als veraltet ansehe
    Schau die lieber mal das Thema LINQ to XML an. Das finde ich sehr komfortabel, da du so den Inhalt der Datei wie Objekte handeln kannst. Mit LINQ hast du auch weniger Aufwand wenn du dich später mal einer Datenbank anstatt der XML Datei bedienen willst.

    Gruß
    Xervos bedankt sich. 

  4. #4
    Avatar von Xervos
    Xervos Xervos ist offline Mitglied Silber
    Registriert seit
    May 2010
    Beiträge
    93
    Hallo

    danke für die Antworten. Ich habe es mitlerweile geschafft eine XML datei zu ver und entschlüsseln. Die Daten auszulesen und den Login zu überprüfen. Ist eigentlich nicht so schwer. Ich habe mir hierfür eine eigene Klasse geschrieben die das übernimmt. Aber ich muss euch recht geben. Da dieses Programm ja ohnehin auf einen server zugreift werde ich das ganze wohl Zentral verwalten. Ich bin ja auch drauf gekommen das wenn ich das ganze Lokal verwalte ein Benutzer nur auf seinem PC einlogen kann und niemals einen anderen Benutzen kann (was auch nicht gerade gut ist).

    Danke euch nochmal habe wenigstens was dabei gelernt und weiß nun für die Zukunft wie sowas funktionieren kann was ja auch nicht schlecht ist

    lg
     

Ähnliche Themen

  1. String verschlüsseln/entschlüsseln
    Von seVes im Forum PHP
    Antworten: 6
    Letzter Beitrag: 19.01.10, 19:04
  2. Antworten: 0
    Letzter Beitrag: 19.01.09, 16:48
  3. Antworten: 9
    Letzter Beitrag: 08.10.05, 13:22
  4. Verschlüsseln und Entschlüsseln
    Von Slater im Forum PHP
    Antworten: 2
    Letzter Beitrag: 02.12.04, 12:22
  5. Antworten: 2
    Letzter Beitrag: 13.07.04, 06:48