Dateien verschlüsselt speichern und entschlüsselt wieder laden

Also, am Passwort liegts nicht, das soll ja möglichst kompliziert sein um das Knacken zu erschweren.

Bin leider darüber gestolpert (man sollte müde nicht en) dass ein kodierter Text nicht mehr als Text sondern als Binärdatei gespeichert werden muss. Daher schaut das ganze auch etwas anders aus:
Visual Basic:
Private Sub save_Click()
    Dim n&, FF%, sText$ 'Ich kürz halt gerne alles zusammen 

    CommonDialog1.FileName = ""
    CommonDialog1.Filter = "Inhalt (*.txt)|*.txt|"
    CommonDialog1.ShowSave
    If CommonDialog1.FileName <> "" Then
    
    FF = FreeFile

    For n = 0 To lstText.ListCount - 1
        sText = sText & lstText.List(n) 'Alle Zeilen in einen String schreiben
        If n < lstText.ListCount - 1 Then sText = sText & vbNewLine 'mit Zeilenumbruch trennen (außer nach letzter Zeile)
    Next n
    sText = Crypt(sText, sCryptKey) 'Alles verschlüsseln

    Kill CommonDialog1.FileName 'Eine eventuell vorhandene Datei löschen
    Open CommonDialog1.FileName For Binary As FF 'Binär öffnen
        Put #FF, , lstText.List(n) 'und schreiben
    Close FF
    MsgBox "Inhalt", vbOKOnly + vbInformation
    End If

End Sub

Das Lesen geht dann gleich:
Visual Basic:
Private Sub Command1_Click()
Dim FF%, sTemp$, sZeilen$()

FF = FreeFile
 CommonDialog1.FileName = ""
 CommonDialog1.Filter = "Inhalt (*.txt)|*.txt|"
 CommonDialog1.ShowOpen
  If CommonDialog1.FileName <> "" Then
    lstText.Clear

    sTemp = Space(FileLen(CommonDialog1.FileName) 'Bestimmen, das die ganze Datei gelesen wird
    Open CommonDialog1.FileName For Binary As FF 'Binär öffnen

       Get #FF, , sTemp 'und einlesen

    Close #FF

    sTemp = Crypt(sTemp, sCryptKey) 'Entschlüssle die Datei
    sZeilen = Split(sTemp, vbNewLine) 'und Splitte nach Zeilen
    For n = 0 To Ubound(sZeilen())
       lstText.AddItem sZeilen(n) 'Jetzt einfach jede Zeile in die Listbox schreiben
    Next n
 End If
 
End Sub

Du mögest mir eventuelle Rechtschreibfehler verzeihen, hab hier kein VB zum testen.

BTW: Verwende doch statt den normalen Code-Tags die VB-Tags ([code=vb] und [/code]), da ist der VB-Code mit Syntaxhighlighting versehen und einfacher zu lesen.


Der Doc!
 
Ich habs gleich mal ausprobiert, nur gibts jetzt wieder Fehler...
Die Meldung kommt zwar, dass er gespeichert hat, aber die angelegte Datei ist leer.
Und wenn man eine neue Datei anlegt, dann kommt der Fehler "Datei" nicht gefunden, weil er ja die Originale löschen will, die am Anfang noch nicht existiert.
 
*sichselbstaufdenkopfhau* :-(

Mein Fehler, hab da vergessen, die Variable zu schreiben, hab auch das mit der Datei korrigiert.
Visual Basic:
Private Sub save_Click()
    Dim n&, FF%, sText$ 'Ich kürz halt gerne alles zusammen 

    CommonDialog1.FileName = ""
    CommonDialog1.Filter = "Inhalt (*.txt)|*.txt|"
    CommonDialog1.ShowSave
    If CommonDialog1.FileName <> "" Then
    
    FF = FreeFile

    For n = 0 To lstText.ListCount - 1
        sText = sText & lstText.List(n) 'Alle Zeilen in einen String schreiben
        If n < lstText.ListCount - 1 Then sText = sText & vbNewLine 'mit Zeilenumbruch trennen (außer nach letzter Zeile)
    Next n
    sText = Crypt(sText, sCryptKey) 'Alles verschlüsseln

    If Dir(CommonDialog1.FileName) <> "" Then Kill CommonDialog1.FileName 'Eine eventuell vorhandene Datei löschen
    Open CommonDialog1.FileName For Binary As FF 'Binär öffnen
        Put #FF, , sText 'und schreiben
    Close FF
    MsgBox "Inhalt", vbOKOnly + vbInformation
    End If

End Sub


Der Doc!
 
Zurück