Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1839 | Besucher online: 121
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Username und Password


Autor: Volker Steitz
Sprache: VB.NET
Bewertung:
7.82 (4 votes)
Anzahl der Aufrufe: 7462
  
Kick it on dotnet-kicks.de  

Beschreibung:

Die nachfolgende Klasse legt in der Registry einen neuen Schlüssel an und Speichert darin den Usernamen und einen Passwordhasch zu dem gespeicherten Usernamen.

Soll das Ausführen einer Anwendung nur bestimmten Usern gestattet sein, oder soll die Anwendung entsprechend geschützt werden, so kann man diese Klasse dafür verwenden, um den Schutz einzurichten.

In einem Formular wird eine Authentifizierung eingebaut, ist dies Erfolgreich - startet die Anwendung oder das Programm, wenn nicht - Shutdown/Exit/ was auch immer.

Die Klasse speichert zur zeit nur den Passwordhasch verschlüsselt, es ist jedoch kein Problem, auch den Usernamen zu Verschlüssen. Es kann der gleich Hash verwendet werden.



Abgelegt unter: Username Password versclüsseln und speichern.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
Imports Microsoft.VisualBasic
Imports System.Text
Imports System.Security.Cryptography



Public Class clsUserAndPassword

    Public CurrentApplication As String = My.Application.Info.ProductName

    ''' <summary>
    ''' Die nächste Function Speichert Zwei Werte (Username und Password)
    ''' in der Registry.
    ''' 
    ''' Es ist u.U. sinnvoller anstelle von  HKEY_LOCAL_MACHINE
    ''' den Zweig                            HKEY_CURRENT_USER
    ''' zu verwenden. 
    ''' 
    ''' Bei HKEY_LOCAL_MACHINE müssen Sie dann darauf achten, dass
    ''' der User schreibenden Zugriff auf den entprechenden 
    ''' Reg.-Key hat
    ''' 
    ''' Bitte beachten Sie, dass nur das Password verschlüsselt
    ''' wird.
    ''' 
    ''' Wollen Sie mehr Sicherheit, müssen Sie auch den Usernamen
    ''' verschlüsseln.
    ''' 
    ''' 
    ''' Aufruf aus einem Formular (Wert in Local Maschine:)
    ''' 
    ''' Auf dem Formular befindet sich eine Textbox mit dem Namen PASSWORDTEXT
    ''' 
    ''' ------------------------------------------------------------------------------
    ''' 
    '''    Dim cls As New clsUserAndPassword
    '''    cls.SaveUserAndPasswordInRegistry(My.User.Name.ToString, PASSWORDTEXT.text)
    ''' 
    ''' ------------------------------------------------------------------------------
    ''' 
    ''' Es wird True oder False zurückgegeben
    ''' 
    ''' 
    '''    
    ''' 
    ''' Aufruf aus einem Formular (Wert in CURRENT_USER)
    ''' 
    ''' Auf dem Formular befindet sich eine Textbox mit dem Namen PASSWORDTEXT
    ''' 
    ''' ------------------------------------------------------------------------------
    ''' 
    '''    Dim cls As New clsUserAndPassword
    '''    cls.SaveUserAndPasswordInRegistry(My.User.Name.ToString, PASSWORDTEXT.text)
    ''' 
    ''' ------------------------------------------------------------------------------
    ''' 
    ''' Es wird True oder False zurückgegeben
    ''' 
    ''' </summary>
    ''' <param name="txtUsername"></param>
    ''' <param name="txtPassword"></param>
    ''' <remarks></remarks>
    ''' 



    Public Sub SaveUserAndPasswordInRegistryCU(ByVal txtUsername As String, _
        ByVal txtPassword As String)

        Dim hashPassword As String = GetHash(txtPassword)
        My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\" & CurrentApplication, txtUsername, hashPassword)

    End Sub

    Public Sub SaveUserAndPasswordInRegistry(ByVal txtUsername As String, _
            ByVal txtPassword As String)

        Dim hashPassword As String = GetHash(txtPassword)

        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\Software\" & CurrentApplication, txtUsername, hashPassword)

    End Sub

    ''' <summary>
    ''' Hier werden Username und Password aus der Registry wieder
    ''' ausgelesen und auf Richtigkeit geprüft.
    ''' Die Werte werden als TRUE (alles ok) oder FALSE (Fehler bei
    ''' Username oder Password) zurückgegeben.
    ''' 
    ''' Wird im folgenden anstelle von My.computer.Registy
    ''' die Funktion                   Microsoft.Win32.Registry
    ''' verwendet, muss man auf die 
    ''' geöffneten Schlüssel unbedingt wieder schließen
    ''' 
    ''' </summary>
    ''' <param name="txtUsername"></param>
    ''' <param name="txtPassword"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>

    Public Function CheckTypedPwdWithRegHash(ByVal txtUsername As String, ByVal txtPassword As String) As Boolean

        'Hashwert aus txtPassword erstellen
        Dim NewHashPassword As String = GetHash(txtPassword)

        'Die in der Registry gespeicherten Werte wieder auslesen.
        Dim ReadPasswordHash As String = Convert.ToString(My.Computer.Registry.GetValue( _
           "HKEY_LOCAL_MACHINE\Software\" & CurrentApplication, _
           txtUsername, Nothing))

        ' Vergleichen der Werte.
        If (ReadPasswordHash = Nothing) Then
            'Ungültiger Benutzer.
            Return False
        ElseIf (ReadPasswordHash = NewHashPassword) Then
            ' Username und Password sind OK.
            Return True
        Else
            'Username OK, Password falsch.
            Return False
        End If
    End Function

    Public Function CheckTypedPwdWithRegHashCU(ByVal txtUsername As String, ByVal txtPassword As String) As Boolean

        'Hashwert aus txtPassword erstellen
        Dim NewHashPassword As String = GetHash(txtPassword)

        'Die in der Registry gespeicherten Werte wieder auslesen.
        Dim ReadPasswordHash As String = Convert.ToString(My.Computer.Registry.GetValue( _
           "HKEY_CURRENT_USER\Software\" & CurrentApplication, _
           txtUsername, Nothing))

        ' Vergleichen der Werte.
        If (ReadPasswordHash = Nothing) Then
            'Ungültiger Benutzer.
            Return False
        ElseIf (ReadPasswordHash = NewHashPassword) Then
            ' Username und Password sind OK.
            Return True
        Else
            'Username OK, Password falsch.
            Return False
        End If
    End Function

    Public Function GetHash(ByVal plainText As String) As String
        'Hier wird ein Hashwert erstellt. Es wird ein leerer String
        'zurückegegebenn wenn etwas nicht stimmt.
        ' 
        Dim simpleByte As Byte()
        Dim ApplicationHash As MD5CryptoServiceProvider
        Dim ApplicationHashBytes As Byte()
        Dim ApplicationHashText As String

        Try
            ' Hier wird der Textwert in ein ByteArray geschrieben
            simpleByte = Encoding.UTF8.GetBytes(plainText)

            'Auswahl eines CryptoServiceProviders
            ApplicationHash = New MD5CryptoServiceProvider

            'Alternative
            'Dim ApplicationHash As SHA1CryptoServiceProvider = New SHA1CryptoServiceProvider()


            'Hashwert aus den Bytes
            ApplicationHashBytes = ApplicationHash.ComputeHash(simpleByte)

            'Umwandeln von hashwerten ind Hexadcimalwert
            ApplicationHashText = Replace(BitConverter.ToString(ApplicationHashBytes), "-", "")
            Return ApplicationHashText
        Catch
            Return "Es ist ein Fehler aufgetreten"
        End Try

    End Function


End Class


Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
Keine Snippets verfügbar.

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.