XML-Datei ver- und entschlüsseln

  • VB.NET

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

    XML-Datei ver- und entschlüsseln

    Hallo und danke schonmal für eure Hilfe.

    Ich hab folgendes Problem:

    Ich bin dabei für mein Programm Daten in einer XML-Datei zu speichern.
    Nun habe ich die XML-Datei verschlüsselt.

    VB.NET-Quellcode

    1. Dim byteArr As Byte()
    2. Dim memstrm As New MemoryStream
    3. Dataset.WriteXml(memstrm)
    4. byteArr = memstrm.ToArray
    5. memstrm.Close()
    6. Dim CSP As New DESCryptoServiceProvider
    7. Dim ICP As ICryptoTransform = CSP.CreateEncryptor
    8. Dim fs As New FileStream(Pfad, FileMode.OpenOrCreate, FileAccess.ReadWrite)
    9. Dim cryptostrm As New CryptoStream(fs, ICP, CryptoStreamMode.Write)
    10. cryptostrm.Write(byteArr, 0, byteArr.Length)
    11. cryptostrm.Close()


    Die Variable "Dataset" ist mein Dataset, welches die Daten beinhaltet.
    Die Variable "Pfad" ist der Speicherort.

    Das Verschlüsseln funktioniert soweit, doch leider bekomme ich die Datei nicht mehr entschlüsselt.
    Das Ergebnis meiner Tüftelei sieht momentan so aus:

    VB.NET-Quellcode

    1. Dim byteArr() As Byte = File.ReadAllBytes(Pfad)
    2. Dim memstrm As New System.IO.MemoryStream
    3. Dim CSP As New DESCryptoServiceProvider
    4. Dim ICP As ICryptoTransform = CSP.CreateDecryptor
    5. Dim cryptostream As New CryptoStream(memstrm, ICP, CryptoStreamMode.Read)
    6. cryptostream.Read(bytearr, 0, bytearr.Length)
    7. Dataset.ReadXml(ms)


    Doch bei "cryptostream.Read(bytearr, 0, bytearr.Length)" bekomme ich eine Fehlermeldung die nur "ungültige Daten" heißt und damit kann ich leider nicht besonders viel anfangen.

    Es wäre nett, wen ihr mir helfen könntet. :D

    mfg buschmanR
    Das ByteArray wird dazu da sein um die verschlüsselten daten zu bekommen.
    Das heißt:
    Mach nen ByteArray mit einer größe von z.b. 50000 bytes.
    Die Read Methode müsste außerdem nen int zurück geben wie viel du gelesen hast.
    Du kannst dann einfach solange die 50000 bytes lesen so lange die gelesenen Bytes > 0 sind.
    Und dann wieder in ne datei schreiben und zwar halt auch auch mit fileStream.Write(byteArr, 0, read)

    Sprich alles in allem:
    Dim read As Integer = 0

    while((read = cryptostrm.Read(bytearr, 0, bytearr.Length)) > 0)
    fileStream.Write(bytearr, 0, read)
    end while


    code nicht getestet


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Nach langem suchen habe ich nun herausgefunden, wie dumm mein Fehler eigendlich war.
    ErfinderDesRades hat Recht. Ich habe beim ver- und entschlüsseln momentan verschiedene Keys. :)
    Tja wie so ein dummer fehler einem mal wieder jede Menge Zeit kostet :D
    Danke für eure Hilfe

    mfg buschmanR