Textdatei ver- entschlüsseln

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von sterat.

    Textdatei ver- entschlüsseln

    Hallo zusammen,

    ich habe mich mit Dataset/Datenbank beschäftigt wie z.B.

    [VB.NET] Daten laden, speichern, verarbeiten - einfachste Variante
    [VB 2010] DatasetOnly: DB-Programmierung ohne Datenbank

    Ich würde gerne die XML Datei verschlüsseln bzw. gleich aus dem Programm verschlüsselt speichern. Hat jemand ein Tip für mich?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „sterat“ ()

    sterat schrieb:

    Ich würde gerne die XML Datei verschlüsseln bzw. gleich aus dem Programm verschlüsselt speichern.
    Die Frage ist wie sensisitiv die Daten wirklich sind: sollen sie wirklich AES verschlüsselt werdenoder nur 'obfuskiert' werden ?

    So oder so, man benutzt die DataSet.WriteXml-Methode (Stream)
    - wenn verschlüsselt, dann ist der Cryptostream richitg ( Link von us4711 )
    - ansonsten würde ggf. sogar ein Zip-Stream ausreichen
    Hallo zusammen,

    danke für die Info. Ich fang wohl erst mal etwas kleiner an. :) Dafür habe ich mich mit Daten ver- und entschlüsseln mit System.Cryptography.ProtectedData beschäftigt und ein kleines Prog. aufgesetzt. Und wie soll auch anders sein - es funzt nicht richtig. Im Anhang die Datei.

    1. Die verschlüsselte Datei wird erstellt. Erneute/weitere Einträge scheinen zu funktionieren. Problem = Beim Entschlüsseln wird mir aber nur der erste Eintrag in Textbox3 angezeigt. Weitere Einträge werden ingnoriert.
    2. In der Textbox2 wird die verschlüsselte Datei nicht angezeigt.

    Könnt Ihr euch bitte den Code mal ansehen und mir sagen, was ich falsch mache?

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Security.Cryptography
    3. Public Class Form1
    4. ' Daten verschlüsseln
    5. Public Sub EncryptData(ByVal sData As String, ByVal sFile As String)
    6. ' MemoryStream erstellen und Original-Daten in den Stream schreiben
    7. Dim oStream As New IO.MemoryStream
    8. With New IO.StreamWriter(oStream)
    9. .Write(sData)
    10. .Close()
    11. End With
    12. ' Daten verschlüsseln
    13. Dim bData() As Byte
    14. bData = ProtectedData.Protect( oStream.ToArray(), Nothing, DataProtectionScope.CurrentUser)
    15. ' verschlüsselte Daten in Datei speichern
    16. My.Computer.FileSystem.WriteAllBytes(sFile, bData, True)
    17. End Sub
    18. ' Daten entschlüsseln
    19. Public Function DecryptData(ByVal sFile As String) As String
    20. ' Datei mit verschlüsselten Daten auslesen
    21. Dim bData() As Byte
    22. bData = My.Computer.FileSystem.ReadAllBytes(sFile)
    23. ' Daten entschlüsseln
    24. bData = ProtectedData.Unprotect(bData, Nothing, DataProtectionScope.CurrentUser)
    25. ' in String umwandeln und als Funktionswert zurückgeben
    26. Dim oStream As New IO.MemoryStream(bData)
    27. With New IO.StreamReader(oStream)
    28. Return .ReadToEnd()
    29. .Close()
    30. End With
    31. End Function
    32. Private Sub EncrypData_(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEncrypData.Click
    33. 'Text verschlüsseln und speichern
    34. EncryptData(TextBox1.Text, "C:\test.txt")
    35. End Sub
    36. Private Sub TxTOpen_(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btTxTOpen.Click
    37. ' Text aus der verschlüsselten Datei anzeigen
    38. Me.TextBox2.Text = File.ReadAllText("C:\test.txt")
    39. End Sub
    40. Private Sub DecrypData_(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btDecrypData.Click
    41. ' verschlüsselten Text aus Datei auslesen und entschlüsseln
    42. Dim sText As String
    43. sText = DecryptData("C:\test.txt")
    44. Me.TextBox3.Text = (sText)
    45. End Sub
    46. End Class

    Bilder
    • Unbenannt.png

      8,22 kB, 846×325, 178 mal angesehen
    Dateien
    War keine Frage, sondern ein Hinweis darauf, dass man nen FileStream (und nen StreamWriter, den man zum Schreiben der Textdatei verwendet) mal eben mit nem CryptoStream verknüpfen kann.
    Anstatt mit komplizierterem Shit rumzuhantieren, kannst du die Textspeichermethode auf den FileStream umschreiben und nen CryptoStream verwenden.