Hallo zusammen,
ich muss ein paar Daten Verschlüsseln um sie in eine DB zu schreiben.
Als ich nach vb.net und verschlüsseln bei google schaute fand ich folgenden Link zu euch:
http://www.vbarchiv.net/tipps/tipp_1351-text-verschluesselung-vbnet.html
hab das Beispiel so wie es dort ist kopiert und eine Beispielanwendung mit dem Code erstellt. Funktioniert.
Anschließend habe ich aus dem Code folgende Klasse erstellt (VerschlüsselnKlasse.vb):
Imports System.Security.Cryptography
Imports System.IO
Imports System.Text
Public Class VerschlüsselnKlasse
Inherits System.Windows.Forms.Form
Function verschlüsseln(ByVal text As String)
Dim rd As New RijndaelManaged
Dim md5 As New MD5CryptoServiceProvider
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(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(text)
cs.Write(data, 0, data.Length)
cs.FlushFinalBlock()
Dim encdata() As Byte = ms.ToArray()
Return Convert.ToBase64String(encdata)
cs.Close()
rd.Clear()
End Function
Function entschlüsseln(ByVal text As String)
MsgBox(text)
Dim rd As New RijndaelManaged
Dim rijndaelIvLength As Integer = 16
Dim md5 As New MD5CryptoServiceProvider
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(text.Trim))
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)
Return System.Text.Encoding.UTF8.GetString(data, 0, i)
cs.Close()
rd.Clear()
End Function
End Class und sie wie folgt eingebunden:
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
TextBox3.Text = VerschlüsselnKlasse.verschlüsseln(TextBox1.Text)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button2.Click
TextBox1.Text = VerschlüsselnKlasse.entschlüsseln(TextBox3.Text)
End Sub
End Class Wenn ich dieses nun ausführe erhalte ich beim Klicken von Button2, zuvor wurde natürlich Button1 gedrückt, die Fehlermeldung "Zeichenabstände sind ungültig und können nicht entfernt werden" mit dem Bezug auf die Stelle:
Dim i As Integer = cs.Read(data, 0, data.Length) Ich habe die Beiträge zu diesem Thema hier im Forum schon gelesen aber die dortigen Gründe treffen bei mir nicht zu. Wo liegt mein Fehler?
Dank und Gruß
MOE |