Hallo liebe Community,
wieder einmal habe ich wohl einen Denkfehler..
Ich habe mich Gestern mit der Ver- und Entschlüsslung von Strings beschafft und auch eine, wie ich behaupten kann, recht gute hinbekommen.
Nun will ich einen Schritt weiter gehen und will Probieren eine einfache .PHP File zu verschlüsseln.
dabei will ich die Bytes mit meinem Modifizierten Vernam-Algorythmus verändern und wieder als datei schreiben.
Nun bin ich allerdings nur bis zum io.file.readallbytes(file) gekommen und weiß grad nicht wie ich das ganze weiter verarbeiten kann...
Ich habe mir eine Lib erstellt, die ich dann in mein Testprojekt eingebunden habe.
Verschlüsseln der File funktioniert soweit schonmal.
Aufruf der Funktion im Testprojekt
Und einmal der Teil aus der Lib
Das Verschlüsseln von einem String Funktioniert auf diese Variante wunderbar. Entschlüsseln geht natürlich auch wunderbar:)
Jetzt habe ich hier zur schnellen Erklärung:
Die Datei mit Readallbytes eingelesen, in einen String umgewandelt und verschlüsseln lassen. Danach habe ich das ganze wieder zurück in Bytes konvertiert und mit WriteAllBytes schreiben lassen.
Die Datei (zum Test ein Bild) lässt sich danach wie geplant nicht mehr öffnen
Führe ich nun allerdings die Decrypt Funktion aus, verschlüsselt er es allerdings noch mehr oO"
Denkfehler?
wieder einmal habe ich wohl einen Denkfehler..
Ich habe mich Gestern mit der Ver- und Entschlüsslung von Strings beschafft und auch eine, wie ich behaupten kann, recht gute hinbekommen.
Nun will ich einen Schritt weiter gehen und will Probieren eine einfache .PHP File zu verschlüsseln.
dabei will ich die Bytes mit meinem Modifizierten Vernam-Algorythmus verändern und wieder als datei schreiben.
Nun bin ich allerdings nur bis zum io.file.readallbytes(file) gekommen und weiß grad nicht wie ich das ganze weiter verarbeiten kann...
Ich habe mir eine Lib erstellt, die ich dann in mein Testprojekt eingebunden habe.
Verschlüsseln der File funktioniert soweit schonmal.
Aufruf der Funktion im Testprojekt
VB.NET-Quellcode
- Function get_bytes()
- klartext = IO.File.ReadAllBytes(file)
- TextBox1.Text = System.Text.Encoding.Unicode.GetString(klartext)
- Return Nothing
- End Function
- Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
- Dim ofd As New OpenFileDialog
- ofd.DefaultExt = My.Computer.FileSystem.SpecialDirectories.Desktop
- If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
- file = ofd.FileName
- get_bytes()
- vernam.startencript_file(klartext, file)
- End If
- End Sub
Und einmal der Teil aus der Lib
VB.NET-Quellcode
- Function VernamCode_file(ByVal sOriginal As String, ByVal sPassword As String)
- Dim i As Long
- Dim aktpos As Long
- Dim bAkt As Byte
- Dim bCode As Byte
- VernamCode_file = ""
- aktpos = 1
- For i = Len(sPassword) + 1 To Len(sOriginal)
- sPassword = sPassword & Mid(sPassword, aktpos, 1)
- aktpos = aktpos + 1
- If aktpos > Len(sPassword) Then aktpos = 1
- Next i
- For i = 1 To Len(sOriginal)
- bAkt = Asc(Mid(sOriginal, i, 1))
- bCode = Asc(Mid(sPassword, i, 1))
- VernamCode_file = VernamCode_file & Chr(bAkt Xor bCode)
- Next i
- End Function
- Function startencript_file(ByVal original() As Byte, ByVal filename As String)
- Dim randompw As String = "a"
- If Not IO.File.Exists(pfile) Then
- Dim random As New Random
- Dim Allowed As String() = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "!", "§", "$", "%", "&", "/", "\", "(", ")", "=", "]", "[", "}", "{", "-", ",", ".", "_", "#", "*"}
- For i As Integer = 0 To 10000
- randompw = Mid(randompw & Allowed(random.Next(0, Allowed.Length)), 1)
- Next
- Dim writer As New IO.StreamWriter(pfile)
- writer.WriteLine(randompw.Length & "||" & randompw)
- writer.Close()
- Else
- Dim reader As New IO.StreamReader(pfile)
- Dim parts() As String = Split(reader.ReadLine, "||")
- reader.Close()
- randompw = parts(1)
- End If
- Dim klar As String = System.Text.Encoding.Unicode.GetString(original)
- Dim newfile() As Byte = System.Text.Encoding.Unicode.GetBytes(VernamCode_string(klar, randompw))
- IO.File.WriteAllBytes(filename, newfile)
- MsgBox(filename & " verschlüsselt gespeichert... Erfolgreich", MsgBoxStyle.Information, "Erfolg")
- Return Nothing
- End Function
- Function startdecript_file(ByVal original() As Byte, ByVal filename As String)
- Dim randompw As String
- Dim reader As New IO.StreamReader(pfile)
- Dim crypted() As Byte
- Dim parts() As String = Split(reader.ReadLine, "||")
- randompw = parts(1)
- reader.Close()
- crypted = IO.File.ReadAllBytes(filename)
- Dim crypted_as_string As String = System.Text.Encoding.Unicode.GetString(original)
- Dim encrypted As String = VernamCode_file(crypted_as_string, randompw)
- encrypted = encrypted.Substring(0, encrypted.Length - 2)
- IO.File.WriteAllBytes(filename, System.Text.Encoding.Unicode.GetBytes(encrypted))
- Return Nothing
- End Function
Das Verschlüsseln von einem String Funktioniert auf diese Variante wunderbar. Entschlüsseln geht natürlich auch wunderbar:)
Jetzt habe ich hier zur schnellen Erklärung:
Die Datei mit Readallbytes eingelesen, in einen String umgewandelt und verschlüsseln lassen. Danach habe ich das ganze wieder zurück in Bytes konvertiert und mit WriteAllBytes schreiben lassen.
Die Datei (zum Test ein Bild) lässt sich danach wie geplant nicht mehr öffnen
Führe ich nun allerdings die Decrypt Funktion aus, verschlüsselt er es allerdings noch mehr oO"
Denkfehler?
Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 ich liebe dich Schatz