VB net Verschlüsselung

Ich hätte ein Problem mit der Entschlüsselung von Text.
Diesen Code hab ich irgedwo aufgegriffen und ein wenig verändert, aber die entschlüsselung funkt nicht.

Imports System.Security.Cryptography
Imports System.IO
Imports System.Text

Public Class Form1
Inherits System.Windows.Forms.Form

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim rd As New RijndaelManaged

Dim md5 As New MD5CryptoServiceProvider
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(TextBox2.Text))

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 = System.Text.Encoding.UTF8.GetBytes(TextBox1.Text)

cs.Write(data, 0, data.Length)
cs.FlushFinalBlock()

Dim encdata() As Byte = ms.ToArray()
TextBox3.Text = Convert.ToBase64String(encdata)
cs.Close()
rd.Clear()
TextBox1.Text = „“
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim rd As New RijndaelManaged
Dim rijndaelIvLength As Integer = 16
Dim md5 As New MD5CryptoServiceProvider
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(TextBox2.Text))

md5.Clear()

Dim encdata() As Byte = Convert.FromBase64String(TextBox3.Text)
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)

TextBox1.Text = System.Text.Encoding.UTF8.GetString(data, 0, i)
cs.Close()
End Sub
End Class

Es kommt kein Wert raus, bin für jede hilfe dankbar.
Wenn jemand eine bessere (einfachere) ver- und entschlüsselungstechnik kennt dann her damit.
Bitte nur Antworten die mit VB .net zu tun haben.

Hi,

ich müsste zuerst mal wissen was dein Ziel ist.

Willst du ein Passwort verschlüsseln und später ein Login gegen dieses Passwort testen, verchlüsselte Informationen an jemanden senden oder willst geht es dir wirklich darum einen Text zu verschlüsseln den man später auch wieder lesen können muss?

Gruß,
Manuel

Ich habe den Code nicht ausgeführt, aber ich vermute, dass es daran liegt, dass der MemoryStream nicht zurückgesetzt wird.

Nach dem Reinschreiben am besten ein ms.Seek(0, Begin) ausführen.

Vielleicht bringt das eine Verbesserung.

-Ralf

PS: Das der ganze Code in einem Formular steht, darüber sehe ich mal hinweg. Das ist bestimmt nur so, weil es ein Spike ist :wink:

Ich habe den Code nicht ausgeführt, aber ich vermute, dass es daran liegt, dass der MemoryStream nicht zurückgesetzt wird.

Nach dem Reinschreiben am besten ein ms.Seek(0, Begin) ausführen.

Vielleicht bringt das eine Verbesserung.

-Ralf

PS: Das der ganze Code in einem Formular steht, darüber sehe ich mal hinweg. Das ist bestimmt nur so, weil es ein Spike ist :wink:.

Hi,

also bei mir geht der Code. Ich geb in textbox1 was ein, klick auf button1 und in der textbox3 erscheint der verschlüsselte code. Klicke ich auf button2 so wird der verschlüsselte text wieder in textbox1 entschlüsselt.

hast du den code einfach mit copy&paste eingefügt und dann die buttons u.s.w. eingefügt? dann ist der code für den button leer. Klicke doppelt auf die buttons und füge so den code ein.

ciao.

Sorry, ich kenne mich mit VB nicht aus, aber ich habe das in C# schon gemacht und dein .NET Code sieht ganz vernünftig aus. Einfacher geht es mit dem Framework leider nicht. Da hilft nur Debuggen.

hab deinen code mal in ein vb.net projekt eingefügt.
fehler null ausser:
TextBox1.Text = „“ gibt einen fehler
" nicht definiert.
ist in vb.net das „&“ nicht ne undefinerte Parameteranweisung?

bin leider nicht so fit in vb.net, eher VB6 ^^
und ausführen mag ich den code jetzt auch nicht, eben weil ich gar nicht weiss was da passiert mit dem crypt :wink:

Kommt da ein leerer String raus oder eine Fehlermeldung?