Da das Speichern funktioniert brauche ich den Code ja nicht zu Posten. Nach dem Speichern von Form Hinzufügen rufe ich auf der Haupt-Form folgende Sub auf.
Public Sub Aktualisieren()
'DataGridViewHaupt füllen
myData.Reset()
vSQL = "SELECT * FROM KeyLocker"
conn.ConnectionString = "Data Source=" & Application.StartupPath & "\" _
& Application.ProductName & ".db;Version=3;"
conn.Open()
myCommand.Connection = conn
myCommand.CommandText = vSQL
myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
Me.DataGridViewHaupt.DataSource = myData
conn.Close()
For x = 0 To myData.Rows.Count - 1
'PW entschlüsseln
Dim rd As New RijndaelManaged
Dim rijndaelIvLength As Integer = 16
Dim md5 As New MD5CryptoServiceProvider
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(Me.Tag)) _
'Passwort
md5.Clear()
Dim encdata() As Byte = Convert.FromBase64String(myData.Rows( _
x).Item("PasswortHash").ToString) 'Verschlüsselter 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)
vKlar = System.Text.Encoding.UTF8.GetString(data, 0, i) _
'KlarTextausgabe
cs.Close()
rd.Clear()
'Bilder bestimmen
Dim vPoints As Integer
Dim vChars As Integer
vPoints = "100"
'Kleinbuchstaben
If System.Text.RegularExpressions.Regex.IsMatch(vKlar, _
"[abcdefghijklmnopqrstuvwxyz]") Then
Else
vPoints = vPoints - 20
End If
'Großbuchstaben
If System.Text.RegularExpressions.Regex.IsMatch(vKlar, _
"[ABCDEFGHIJKLMNOPQRSTUVWXYZ]") Then
Else
vPoints = vPoints - 20
End If
'Zahlen
If System.Text.RegularExpressions.Regex.IsMatch(vKlar, _
"[0123456789]") Then
Else
vPoints = vPoints - 20
End If
'sonderzeichen
If System.Text.RegularExpressions.Regex.IsMatch(vKlar, "[!§$%&/\{}(" & _
")°^<>|?ß´`+*~#',;.:-_]") Then
Else
vPoints = vPoints - 20
End If
'Länge
If vKlar.Length < 10 Then
vChars = (10 - vKlar.Length) * 5
vPoints = vPoints - vChars
End If
If vPoints <= 20 Then Me.DataGridViewHaupt.Rows(x).Cells( _
"Sicherheit").Value = My.Resources.SehrSchwach
If vPoints > 21 And vPoints <= 40 Then Me.DataGridViewHaupt.Rows( _
x).Cells("Sicherheit").Value = My.Resources.Schwach
If vPoints > 41 And vPoints <= 60 Then Me.DataGridViewHaupt.Rows( _
x).Cells("Sicherheit").Value = My.Resources.Mittel
If vPoints > 61 And vPoints <= 80 Then Me.DataGridViewHaupt.Rows( _
x).Cells("Sicherheit").Value = My.Resources.Stark
If vPoints > 81 Then Me.DataGridViewHaupt.Rows(x).Cells( _
"Sicherheit").Value = My.Resources.SehrStark
Next
'Bestimmte Columns unsichtbar machen
DataGridViewHaupt.Columns("ID").Visible = False
DataGridViewHaupt.Columns("Kategorie").Visible = False
DataGridViewHaupt.Columns("PasswortHash").Visible = False
End Sub Je nachdem wie groß nun der Wert von vPoints ist bringt er bei der Abfrage der vPoints die Fehlermeldung:Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die _
Auflistung sein. Parametername: index Und wie zuvor gepostet, wenn ich diese Abfrage weglasse kommt keine Fehlermeldung, dafür werden die Daten nicht angezeigt.
Den gleich Code habe ich bei Form_Load der Haupt-Form und da Funktioniert er.
wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passw?rten
wintoolz.Filmdatenbank - Verwaltungssoftware f?r Filme
wintoolz.CodeGallery - Programm zum speichern von Codeschnipseln |