Checkbox Logindaten Speichern

  • VB.NET

Es gibt 53 Antworten in diesem Thema. Der letzte Beitrag () ist von doci.

    Checkbox Logindaten Speichern

    Hallo

    ich habe ein Form mit Benutzernamen und Passwort und wollte eine Checkbox damit ich die logindaten speichern kann.

    hab da schonmal gegooelt aber komme damit nicht klar da es meistens nur code schnipsel sind und als anfänger das nicht so hinhaut.

    danke
    ähh? wasn das :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „haufe“ ()

    du hast aber sehr viele fragen :P

    versuch echt mal intensiver zu googlen, kann ja nich sein, das vb-paradise alles für dich macht :P
    aber um dir trotzdem mal nen anstoss zu geben, google mal nen bisschen nach xml(xml eignet sich eigentlich gut, um i-welche daten zu speichern) oder nach ini files(ist etwas komplizierter als xml) oder eben einfach daten in einer txt speichern.

    und der rest ist ja einfach

    VB.NET-Quellcode

    1. If Checkbox1.checked = true then
    2. hier deine prozedur zum speichern der beiden textboxen
    3. end if
    Hai !
    Du willst deine Password und Benutzername speichern, ja das geht, das hat auch schon der doci beantwortet.


    Es gibs zwei möglickeiten wie du deine Benutzername und Password speicherst:
    (muß verschlüsseln sonst ergibt kein sinn)

    1. Du speicherst Benutzername und Password in die Datei

    Ich denke du weist wie man in die Datei schreibt und Datei liest, hier hast du ein kleine nach Hilfe
    [VB 2005] Datei schreiben/lesen
    (Das habe ich vorher auch nicht gewust wie man unter VB NET mit die Dateie arbeitet)

    2 Du spiecherst in My.Settings, kannst hier nach lesen, solltest du nicht klar kommen, dann frag einfach:
    powerdesktop-online.de/de/tutorials.html


    Was Verschlüsselung betrift, suche hier in Forum, das Thema haben wir schon paar mal gehabt oder schau hier nach:
    vbarchiv.net/home/search.php , du kannst dir selber aussuchen wie du dein Programm gestalltest und sicher machst, es war nur mein Vorschlag.

    Mal schauen was die anderen dazu schreiben !


    Mfg Alex ;) ;) 8-)

    Edit by Lupus: Bitte kein Rot verwenden, ist für Mods & Admin

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lupus“ ()

    Vielen Dank

    es hat mich weiter gebracht.

    Habe jetzt ein Form mit 2 Buttons 1 Checkbox und 2 Textboxen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. If uname.Text = "haufe" And password.Text = "test" Then
    4. MessageBox.Show("pw pass")
    5. Else
    6. MessageBox.Show("pw false")
    7. End If
    8. End Sub
    9. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    10. Close()
    11. End Sub
    12. Private Sub Form1_FormClosing(ByVal sender As Object, _
    13. ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    14. If CheckBox1.Checked = True Then
    15. My.Settings.uname = uname.Text
    16. My.Settings.pw = password.Text
    17. My.Settings.Save()
    18. Else
    19. My.Settings.uname = "Benutzername"
    20. My.Settings.pw = ""
    21. My.Settings.Save()
    22. End If
    23. My.Settings.Checked = Me.CheckBox1.Checked
    24. My.Settings.Save()
    25. End Sub
    26. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    27. Me.CheckBox1.Checked = My.Settings.Checked
    28. Me.uname.Text = My.Settings.uname
    29. Me.password.Text = My.Settings.pw
    30. End Sub
    31. End Class


    Aber habe noch viele Fragen!!!!

    1.)My.Settings <--Wo sind die gespeichert?
    2.)My.Settings <-- sind die von jedem auslessbar sprich jeder kann den Namen und das Passwort sehen?
    3.)Passwort und User <-- sind diese auch per Form anzulegen sprich Neuen User anlegen??
    Danke
    ähh? wasn das :)
    also wie schon erwähnt ist es nur dann sinnvoll, die logindaten zu speichern, wenn du das passwort verschlüsselt speicherst, egal du heutzutage anmeldedaten eintragen musst, und diese in einer datenbank gespeichert werden, sind die passwörter immer verschlüsselt gespeichert.

    und wo my.settings..... speichert weis ich nicht sry :P
    hallo,

    wo die my.settings daten landen, kann man rausfinden wenn man googelt.
    speicherort

    und sicher sind diese daten dort nicht !
    es sei denn, der benutzer hat genauso wenig ahnung wie der programmierer.
    (wo die daten stehen - meine ich ;) )

    gruss

    mikeb69

    mikeb69 schrieb:

    und sicher sind diese daten dort nicht !

    Kann man so nicht sagen, in dem Verzeichnis in dem die Daten gespeichert werden, also C:\Dokumente und Einstellungen\[Benutzername]\... hat ja nur der angemeldete Benutzer zugriff. Wenn also mehrere Benutzer an diesem Rechner arbeiten und jeder ein eigenes Benutzerkonto + Passwort hat, ist die Settingsdatei auch nur für den Benutzer verfügbar, der sie erstellt hat.
    Just my two cents ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DonMaxo“ ()

    Ja habs gefunden!!!!
    C:\Users\user\AppData\Local\Project <--- da ist eine datei user.config. :(

    Natürlich steht da schön das Passwort :D:D

    Verschlüsselung?!?:

    hab das dazu gefunden aber bekomme es nicht in vb 2008 zum laufen.
    ähh? wasn das :)
    überleg dir doch ne eigene verschlüsselung

    du kansnt zb die eingabe zuerst mal in ihre buchstaben aufteilen, dann jeden buchstaben in ascii umwandeln, alle herauskommenden zahlen miteinander addieren und aus dem ergebniss machste auch noch i-was, keiner kommt drauf, was das ursprungswort war.

    beispiel. das pw ist test

    t = 116
    e = 101
    s = 115
    t = 116

    die summe ist 448, multipliziere das zb mit sich selbst, ergibt 200704, und diesen wert speicherst du als passwort
    wenn jemand nicht den rechenweg weis, is es schwer da wieder dahinter zu kommen

    wenn du jetz abfragst, ob der user sich einloggn darfst, erstellst du wieder diesen wert, und prüfst das ergebniss mit den gespeicherten daten


    PS: das ist nur nen kleiner denkanstoss, natürlich sollte, wenn du dies verwendest alles etwas komplizierter sein :P
    das problem was ich habe ist das der befehl :
    Function EnCrypt(ByVal eText As String, ByVal eKey As String) As String
    den fehler :
    Is not Valid in Namespace bringt und noch weiter fehler.

    Mach ich mit den codes was falsch?
    ähh? wasn das :)
    ja danke das du dir den code mal anschauen willst ist auch hier aus dem forum

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Function EncodeString(ByVal strToEncode As String, _
    3. ByVal strPassword As String) As String
    4. Dim strResult As String
    5. Dim i As Long
    6. Dim cfc() As Integer
    7. ReDim cfc(1 To Len(strPassword))
    8. For i = 1 To UBound(cfc)
    9. cfc(i) = Asc(Right(strPassword, _
    10. Len(strPassword) - i + 1))
    11. Next i
    12. For i = 1 To Len(strToEncode)
    13. strResult = strResult & _
    14. Chr(addToIndex(Asc(Right(strToEncode, _
    15. Len(strToEncode) - i + 1)), VirtPos(i, cfc)))
    16. Next i
    17. EncodeString = strResult
    18. End Function
    19. ' Text in Verbindung mit einem Passwort entschlüsseln
    20. Public Function DecodeString(ByVal strToDecode As String, _
    21. ByVal strPassword As String) As String
    22. Dim strResult As String
    23. Dim i As Long
    24. Dim cfc() As Integer
    25. ReDim cfc(1 To Len(strPassword))
    26. ReDim ttc(1 To Len(strToDecode))
    27. For i = 1 To UBound(cfc)
    28. cfc(i) = Asc(Right(strPassword, _
    29. Len(strPassword) - i + 1))
    30. Next i
    31. For i = 1 To Len(strToDecode)
    32. strResult = strResult & _
    33. Chr(GetOfIndex(Asc(Right(strToDecode, _
    34. Len(strToDecode) - i + 1)), VirtPos(i, cfc)))
    35. Next i
    36. DecodeString = strResult
    37. End Function
    38. ' Hilfsfunktionen
    39. Private Function VirtPos(ByVal i As Long, _
    40. ByVal a() As Integer) As Integer
    41. If i > UBound(a) Then
    42. VirtPos = VirtPos(i - UBound(a), a)
    43. Else
    44. VirtPos = a(i)
    45. End If
    46. End Function
    47. Private Function addToIndex(ByVal i As Integer, _
    48. ByVal j As Integer) As Integer
    49. If i + j > 255 Then
    50. addToIndex = i + j - 255
    51. Else
    52. addToIndex = i + j
    53. End If
    54. End Function
    55. Private Function GetOfIndex(ByVal i As Integer, _
    56. ByVal j As Integer) As Integer
    57. If i - j < 0 Then
    58. GetOfIndex = i - j + 255
    59. Else
    60. GetOfIndex = i - j
    61. End If
    62. End Function
    63. End Class

    die fehler

    VB.NET-Quellcode

    1. Error 1 Array lower bounds can be only '0'. C:\Users\haufe\Documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication2\Form1.vb 9 13 WindowsApplication2
    2. Error 2 'Public ReadOnly Property Right() As Integer' has no parameters and its return type cannot be indexed. C:\Users\haufe\Documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication2\Form1.vb 12 26 WindowsApplication2
    3. Error 3 'Public ReadOnly Property Right() As Integer' has no parameters and its return type cannot be indexed. C:\Users\haufe\Documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication2\Form1.vb 18 34 WindowsApplication2
    4. Error 4 Array lower bounds can be only '0'. C:\Users\haufe\Documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication2\Form1.vb 32 13 WindowsApplication2
    5. Error 5 Name 'ttc' is not declared. C:\Users\haufe\Documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication2\Form1.vb 33 9 WindowsApplication2
    6. Error 6 Array lower bounds can be only '0'. C:\Users\haufe\Documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication2\Form1.vb 33 13 WindowsApplication2
    7. Error 7 'Public ReadOnly Property Right() As Integer' has no parameters and its return type cannot be indexed. C:\Users\haufe\Documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication2\Form1.vb 36 26 WindowsApplication2
    8. Error 8 'Public ReadOnly Property Right() As Integer' has no parameters and its return type cannot be indexed. C:\Users\haufe\Documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication2\Form1.vb 42 34 WindowsApplication2


    alle Fehler ausser die Right Fehler bekomme ich weg

    der Code ist von hier
    ähh? wasn das :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „haufe“ ()

    So hab das jetzt soweit am laufen !!

    Die verschlüsselung bekomme ich hin das entschlüsseln auch, aber ich habe eine speicher funktion in meinem login und ich müsste noch irgend einen wert in die my.settings ablegen so das ich wieder entschlüsseln kann nach dem neustart des programmes .....Nur was :(

    VB.NET-Quellcode

    1. Imports System.Security.Cryptography
    2. Imports System.IO
    3. Imports System.Text
    4. Public Class Form1
    5. Inherits System.Windows.Forms.Form
    6. Dim crypw As String
    7. ' Encrypt using stream (binary)
    8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    9. If (CheckEntry() = True) Then
    10. MsgBox("geht")
    11. Else
    12. AxWindowsMediaPlayer1.URL = My.Application.Info.DirectoryPath + "\pw.mp3"
    13. AxWindowsMediaPlayer1.Ctlcontrols.play()
    14. MsgBox("Falsche Eingabe. Bitte nochmal versuchen.", "Fehler")
    15. End If
    16. Dim rd As New RijndaelManaged
    17. Dim md5 As New MD5CryptoServiceProvider
    18. Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes("lorrely"))
    19. md5.Clear()
    20. rd.Key = key
    21. rd.GenerateIV()
    22. Dim iv() As Byte = rd.IV
    23. Dim ms As New MemoryStream
    24. ms.Write(iv, 0, iv.Length)
    25. Dim cs As New CryptoStream(ms, rd.CreateEncryptor, CryptoStreamMode.Write)
    26. Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(TextBox2.Text)
    27. cs.Write(data, 0, data.Length)
    28. cs.FlushFinalBlock()
    29. Dim encdata() As Byte = ms.ToArray()
    30. crypw = Convert.ToBase64String(encdata)
    31. cs.Close()
    32. rd.Clear()
    33. End Sub
    34. Protected Function CheckEntry()
    35. Dim arrUser(3) As String
    36. Dim arrPass(3) As String
    37. arrUser(0) = "Haufe"
    38. arrUser(1) = "Pegasus"
    39. arrUser(2) = "Markus"
    40. arrPass(0) = "1234#"
    41. arrPass(1) = "123456"
    42. arrPass(2) = "1234,,--"
    43. Dim i As Integer = 0
    44. For i = 0 To 2
    45. If TextBox1.Text = arrUser(i) And TextBox2.Text = arrPass(i) Then
    46. Return True
    47. End If
    48. Next
    49. Return False
    50. End Function
    51. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    52. Me.Close()
    53. End Sub
    54. Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.MouseClick
    55. MessageBox.Show("Die Anmeldedaten werden beim setzten des Hakens gespeichert!!")
    56. End Sub
    57. Private Sub Form1_FormClosing(ByVal sender As Object, _
    58. ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    59. If CheckBox1.Checked = True Then
    60. My.Settings.uname = TextBox1.Text
    61. My.Settings.pw = crypw
    62. My.Settings.Save()
    63. Else
    64. My.Settings.uname = ""
    65. My.Settings.pw = ""
    66. My.Settings.Save()
    67. End If
    68. My.Settings.checked = Me.CheckBox1.Checked
    69. My.Settings.Save()
    70. End Sub
    71. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    72. Me.CheckBox1.Checked = My.Settings.checked
    73. Me.TextBox1.Text = My.Settings.uname
    74. Dim crypws As String = My.Settings.pw
    75. Dim rd As New RijndaelManaged
    76. Dim rijndaelIvLength As Integer = 16
    77. Dim md5 As New MD5CryptoServiceProvider
    78. Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes("lorrely"))
    79. md5.Clear()
    80. Dim encdata() As Byte = Convert.FromBase64String(crypws)
    81. Dim ms As New MemoryStream(encdata)
    82. Dim iv(15) As Byte
    83. ms.Read(iv, 0, rijndaelIvLength)
    84. rd.IV = iv
    85. rd.Key = key
    86. Dim cs As New CryptoStream(ms, rd.CreateDecryptor, CryptoStreamMode.Read)
    87. Dim data(ms.Length - rijndaelIvLength) As Byte
    88. Dim i As Integer = cs.Read(data, 0, data.Length)
    89. Me.TextBox2.Text = System.Text.Encoding.UTF8.GetString(data, 0, i)
    90. cs.Close()
    91. rd.Clear()
    92. End Sub
    93. End Class


    bei

    VB.NET-Quellcode

    1. Dim data(ms.Length - rijndaelIvLength) As Byte
    kommt der Fehler:
    Die arithmetische Operation hat einen Überlauf verursacht.

    info
    Mehrere Postings hintereinander in einem Thread (Thema) von einem
    einzigen User sind nur erlaubt, wenn dies unbedingt erforderlich ist,
    ansonsten gibt es eine Verwarnung wegen Spams. Für nachträgliche
    Informationen gibt es die Editierfunktion!

    Denke das es so übersichtlicher ist was ich möchte deswegen 2

    Danke
    ähh? wasn das :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „haufe“ ()

    Hai !
    Also zu deine Verschlüsselung, die Code habe ich auch, aber Funktionierts auch nicht, es gibs 2 Möglichekeiten:

    1 Du nimmst hier vbarchiv.net/home/search.php oder hier in Forum das Thema "Verschlüsselung" haben wir schon paar mal behadelt

    2 Du lädst dir die EncodeClasses DLL v2.0 das ist eine DLL du kannst hier laden vbarchiv.net/download/details.php?id=362 oder du suchst in google da bekomst du alles ink. einfach sitzen und suchen suchen und suchen


    Vieleicht bekommst du über google eine DLL als Freeware, schau dich um !

    Mfg Alex ;) ;) ;)

    Edit by Lupus: siehe oben, bitte kein Rot!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lupus“ ()

    Wieso sollte ich das tun? der Original Code funktioniert 1a!!!!

    Wenn ich die Save funktion weglasse geht doch alles 8|

    Wäre schön wenn mir jemand sagen könnte wo mein fehler liegt

    Danke
    ähh? wasn das :)
    Hallo

    habe immer noch das problem beim speichern der anmelde daten bekomme ich in zeile 114 einen fehler, das wohl daran liegt das nach dem neustarten des programmes ein wert fehlt.

    kann mir da niemand helfen?

    der code ohne speicherfunktion funktioniert perfect

    VB.NET-Quellcode

    1. Imports System.Security.Cryptography
    2. Imports System.IO
    3. Imports System.Text
    4. Public Class Form1
    5. Inherits System.Windows.Forms.Form
    6. Dim crypw As String
    7. ' Encrypt using stream (binary)
    8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    9. If (CheckEntry() = True) Then
    10. MsgBox("geht")
    11. Else
    12. AxWindowsMediaPlayer1.URL = My.Application.Info.DirectoryPath + "\pw.mp3"
    13. AxWindowsMediaPlayer1.Ctlcontrols.play()
    14. MsgBox("Falsche Eingabe. Bitte nochmal versuchen.", "Fehler")
    15. End If
    16. Dim rd As New RijndaelManaged
    17. Dim md5 As New MD5CryptoServiceProvider
    18. Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes("lorrely"))
    19. md5.Clear()
    20. rd.Key = key
    21. rd.GenerateIV()
    22. Dim iv() As Byte = rd.IV
    23. Dim ms As New MemoryStream
    24. ms.Write(iv, 0, iv.Length)
    25. Dim cs As New CryptoStream(ms, rd.CreateEncryptor, CryptoStreamMode.Write)
    26. Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(TextBox2.Text)
    27. cs.Write(data, 0, data.Length)
    28. cs.FlushFinalBlock()
    29. Dim encdata() As Byte = ms.ToArray()
    30. crypw = Convert.ToBase64String(encdata)
    31. cs.Close()
    32. rd.Clear()
    33. End Sub
    34. Protected Function CheckEntry()
    35. Dim arrUser(3) As String
    36. Dim arrPass(3) As String
    37. arrUser(0) = "Haufe"
    38. arrUser(1) = "Pegasus"
    39. arrUser(2) = "Markus"
    40. arrPass(0) = "1234#"
    41. arrPass(1) = "123456"
    42. arrPass(2) = "1234,,--"
    43. Dim i As Integer = 0
    44. For i = 0 To 2
    45. If TextBox1.Text = arrUser(i) And TextBox2.Text = arrPass(i) Then
    46. Return True
    47. End If
    48. Next
    49. Return False
    50. End Function
    51. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    52. Me.Close()
    53. End Sub
    54. Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.MouseClick
    55. MessageBox.Show("Die Anmeldedaten werden beim setzten des Hakens gespeichert!!")
    56. End Sub
    57. Private Sub Form1_FormClosing(ByVal sender As Object, _
    58. ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    59. If CheckBox1.Checked = True Then
    60. My.Settings.uname = TextBox1.Text
    61. My.Settings.pw = crypw
    62. My.Settings.Save()
    63. Else
    64. My.Settings.uname = ""
    65. My.Settings.pw = ""
    66. My.Settings.Save()
    67. End If
    68. My.Settings.checked = Me.CheckBox1.Checked
    69. My.Settings.Save()
    70. End Sub
    71. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    72. Me.CheckBox1.Checked = My.Settings.checked
    73. Me.TextBox1.Text = My.Settings.uname
    74. Dim crypws As String = My.Settings.pw
    75. Dim rd As New RijndaelManaged
    76. Dim rijndaelIvLength As Integer = 16
    77. Dim md5 As New MD5CryptoServiceProvider
    78. Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes("lorrely"))
    79. md5.Clear()
    80. Dim encdata() As Byte = Convert.FromBase64String(crypws)
    81. Dim ms As New MemoryStream(encdata)
    82. Dim iv(15) As Byte
    83. ms.Read(iv, 0, rijndaelIvLength)
    84. rd.IV = iv
    85. rd.Key = key
    86. Dim cs As New CryptoStream(ms, rd.CreateDecryptor, CryptoStreamMode.Read)
    87. Dim data(ms.Length - rijndaelIvLength) As Byte
    88. Dim i As Integer = cs.Read(data, 0, data.Length)
    89. Me.TextBox2.Text = System.Text.Encoding.UTF8.GetString(data, 0, i)
    90. cs.Close()
    91. rd.Clear()
    92. End Sub
    93. End Class
    ähh? wasn das :)