Dataset Verschlüsseln

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Dataset Verschlüsseln

    Hallo,

    gerade bin ich beim Versuch ein Dataset zu verschlüsseln, das klappt schon, aber beim wieder einlesen
    gibt es schwere Probleme. Hiermit ver- und Entschlüssle ich das Dataset:

    Code (Leicht Vereinfacht)

    VB.NET-Quellcode

    1. Dim ms1 As New MemoryStream
    2. Dim ms2 As New MemoryStream
    3. Dim s1 As String = ""
    4. Dim s2 As String = ""
    5. Using sr As New StreamReader(ms1)
    6. DataSet1.WriteXml(ms1)
    7. ms1.Position = 0
    8. s1 = sr.ReadToEnd
    9. MsgBox(s1)
    10. s1 = verschlüsseln(s1, "pw123")
    11. IO.File.WriteAllText("test.xml", s1)
    12. End Using
    13. ''
    14. ''
    15. ''
    16. ''
    17. Using sw As New StreamWriter(ms2)
    18. s2 = IO.File.ReadAllText("test.xml")
    19. s2 = Entschlüsseln(s2, "pw123")
    20. sw.Write(s2)
    21. MsgBox(s2)
    22. DataSet1.ReadXml(ms2)
    23. End Using
    24. '###################################
    25. Dim reihe As DataRow = DataSet1.DataTable1.NewRow
    26. reihe("eins") = "test"
    27. reihe("zwei") = "Test2"
    28. DataSet1.DataTable1.Rows.Add(reihe)
    29. '###################################
    30. End Sub




    Es fliegt immer die Exception: "Das Stammelement ist nicht vorhanden."
    Wenn ich aber den entschlüsselten Text aus dem MemoryStream speichere und daraus die XML-Datei lese,
    funktioniert alles hervorragend, aber den Text zu verschlüsseln und entschlüsselt zu speichern ist eine
    zu große Sicherheitslücke.

    Hat jemand ne Idee, wie man das DataSet zuverlässig aus dem MemoryStream lesen kann ?
    Bin für jeden Ideenanstoß dankbar.
    @Kilian_98 Funktioniert das ganze mit einem einfachen String?
    Zerlege Dein Problem in eine Reihe disjunkter Teilprobleme bzw. einzelner unabhängiger Ablaufschritte, die Du einzeln löst.
    Wenn alle einzelnen Schritte funktionieren, setzt Du sie zur Gesamtlösung zusammen.
    Teste insbesondere dies (Pseudocode):

    VB.NET-Quellcode

    1. Text2 = Entschlüsseln(Verschlüsseln(Text))
    2. If Text <> Text2 Then
    3. MessageBox("Fehler")
    4. End If

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Funktioniert das ganze mit einem einfachen String?
    Sollte schon, weil wenn ich
    den String wieder in einer Datei speichere, kann das DS einwandfrei daraus lesen.
    Auch deinen Code habe ich verwendet, es tritt kein Fehler auf.
    Um Sicherzugehen habe ich meinen Code nochmal hier hingeschrieben:

    Code

    VB.NET-Quellcode

    1. Dim text1 As String = "ich bin ein String"
    2. Dim text2 As String = ""
    3. text2 = Entschlüsseln(verschlüsseln(text1, "pw123"), "pw123")
    4. If text1 <> text2 Then
    5. MsgBox("Fehler")
    6. End If