Also du willst eine Datei, die z. B. folgenden Inhalt hat:
zeile 1
zeile 2
zeile 3
usw. Diese ist nun verschlüsselt.
Du willst diese entschlüsseln, und ein "test" dranhängen:
zeile 1
zeile 2
zeile 3
test
So weit so gut.
Aber dann bräuchtest du diese nicht mehr speichern, um sie neu zu verschlüsseln. Ich kenne da was, was dir vielleicht helfen könnte. Es handelt sich hierbei um 2 Funktionen, die text beliebig ver und entschlüsseln können. Mit passwortangabe. Je komplexer das Passwort, je schwerer ist dies zu knacken ;D (also n passwort wie 39r5-7h3q-g7jk-zhg6-u54z-76k8-4ewq-6 ist verdammt schwer zu knacken)
Zuallererst importierst du System.Text und System.Security.Cryptography
Funktion 1: Verschlüsseln (macht den String unlesbar)
Public Function EnCrypt(ByVal Text As String,ByVal Passwort As String) As _
String
Dim rd As New RijndaelManaged
Dim md5 As New MD5CryptoServiceProvider
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(Passwort))
md5.Clear()
rd.Key = Key
rd.GenerateIV
Dim iv() As Byte = rd.IV
Dim ms As New MemoryStream
ms.Write(iv,0,iv.Length)
Dim cs As New CryptoStream( _
ms,rd.CreateEncryptor,CryptoStreamMode.Write)
Dim data() As Byte = Encoding.UTF8.GetBytes(Text)
cs.Write(data,0,data.Length)
cs.FlushFinalBlock()
Dim encdata() As Byte = ms.ToArray()
cs.Close()
rd.Clear()
Return(Convert.ToBase64String(encdata))
End Function Funktion 2: Entschlüsseln (macht den String wieder lesbar)
Public Function DeCrypt(ByVal Text As String,ByVal Passwort As String) As _
String
Dim rd As New RijndaelManaged
Dim rijndaelIvLength As Integer = 16
Dim md5 As New MD5CryptoServiceProvider
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(Passwort))
md5.Clear()
Dim encdata() As Byte = Convert.FromBase64String(Text.Trim())
Dim ms As New MemoryStream(encdata)
Dim iv(15) As Byte
ms.Read(iv,0,rijndaelIvLength)
rd.IV = iv
rd.Key = key
Dim cs As New CryptoStream(ms,rd.CreateDecryptor,CryptoStreamMode.Read)
Dim data(ms.Length - rijndaelIvLength) As Byte
Dim i As Integer = cs.Read(data,0,data.Length)
cs.Close()
rd.Clear()
Return(Encoding.UTF8.GetString(data,0,i))
End Function Nun könntest du es folgendermaßen machen:
Dim ContMenList As String = ... ' Datei auslesen und in eine Variable
' speichern. Z. b. ContMenList
Dim Einträge As String = DeCrypt(ContMenList,"dein passwort hier hin")
' Die Ausführenden Befehle und Änderungen mit dem jetzt sichtbaren text.
ContMenList = EnCrypt(Einträge,"dein passwort hier hin")
' Wieder in die Datei reinschreiben Das wärs. Achte aber darauf, dass dein passwort stets gleich ist und dass das keiner bekommt (wenns sicher werden soll, und kein anderer drauf zugriff kriegen soll.)
Wie du das dann in ein ContextMenü oder sonstwas packst, musst du rausfinden. Ich hab hier eigentlich schon viel zu viel verraten ...
MFG
Griever |