ver - /Entschlüsselung ein Passwort gespeichert auf compact-Datenbank
Mein Projekt enthält 2 Formen, eine zu registrieren, die Benutzer und eine zum login. Ich bin mit einem kompakten lokale Datenbank zur Speicherung der Passwörter. Ich schrieb eine Funktion, um das Kennwort zu verschlüsseln, wenn der Benutzer sich registriert. Ich schrieb dann ein anderer zum entschlüsseln das selbe Passwort, wenn der Benutzer sich anmeldet.
Den ersten Teil, Verschlüsselung, funktioniert Prima. Der Benutzer registriert sich, und ich kann sehen, dass das Passwort verschlüsselt in der Datenbank. Jedoch, wenn ich versuche zu einloggen, dass das Passwort nicht entschlüsselt werden. Hier sind meine Funktionen.
Module EncryptionModule
Public Function base64Encode(ByVal sData As String) As String
Try
Dim encData_Byte As Byte() = New Byte(sData.Length - 1) {}
encData_Byte = System.Text.Encoding.UTF8.GetBytes(sData)
Dim encodedData As String = Convert.ToBase64String(encData_Byte)
Return (encodedData)
Catch ex As Exception
Throw (New Exception("Error is base64Encode" & ex.Message))
End Try
End Function
Public Function base64Decode(ByVal sData As String) As String
Dim encoder As New System.Text.UTF8Encoding()
Dim utf8Decode As System.Text.Decoder = encoder.GetDecoder()
Dim todecode_byte As Byte() = Convert.FromBase64String(sData)
Dim charCount As Integer = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length)
Dim decoded_char As Char() = New Char(charCount - 1) {}
utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0)
Dim result As String = New [String](decoded_char)
Return result
End Function
End Module
Dies ist die routine, registrieren Sie einen Benutzer und der Verschlüsselung der Passwort:
Private Sub btnRegister_Click(sender As Object, e As EventArgs) Handles btnRegister.Click
'If the username is taken or used on the
'database, then create account
If MasterTableAdapter.CheckUserName(txtUserName.Text) = Nothing Then
Dim pwd As String = base64Encode(Trim(txtConfirmPassword.Text))
MasterTableAdapter.CreateAccount(txtFName.Text, txtLName.Text, txtUserName.Text, pwd, int1)
MsgBox("An account has been created for: " & vbNewLine & _
"Employee: " & txtFName.Text & " " & txtLName.Text & vbNewLine & _
"User Name: " & txtUserName.Text & vbNewLine & _
"Access Level: " & strAccessLevel)
Me.Close()
Else
MessageBox.Show("The username is in use. Please select another username.", "Authentication Error", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End If
End Sub
Hier ist die routine zum anmelden und entschlüsseln das Passwort aus dem Login-Formular:
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Klicken Sie auf
Dim pwd As String = base64Decode(Trim(txtPassword.Text))
If Not MasterTableAdapter.Login(txtUserName.Text, pwd) = Nothing Then
'frmWelcomePage.Show()
MsgBox("SUCCESS")
Else
'If no match, display error, clear text boxes and send focus back to the username text box.
MessageBox.Show("Username or password do not match", "Authentication Failure", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
txtPassword.Text = Nothing
txtUserName.Text = Nothing
txtUserName.Focus()
End If
End if
End Sub
Ich bin neu in die ganze Verschlüsselung arena, also ich weiß nicht was ich falsch mache hier.
crypting
wenn Sie darauf bestehen, tun Sie es so, wie Sie sind, wenn man kodiert einen string, der dann sofort entschlüsseln, bekommen Sie das gleiche zurück?
Ich habe es gerade ausprobiert und es hat nicht funktioniert. Dass ich nicht die gleiche Sache zurück. Ich bin neu in diesem, so bin ich tastete auf dem Weg.
InformationsquelleAutor Jose M. | 2013-10-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, die Base64-Codierung ist nicht Verschlüsselung. Viele Menschen können sich auf B64-string und wissen, was zu tun ist, zu entschlüsseln. Sie sollten sich in hash-Techniken wie podiluska vorgeschlagen.
Dass diese, da Ihre Decode-Methode cant entschlüsseln, was Sie codieren, es bedeutet, Sie haben einen Fehler in einer oder der anderen. Einfache Codierung für das, was Sie tun, die getan werden kann:
Zu Dekodieren ist genau das Gegenteil:
InformationsquelleAutor Nat Pongjardenlarp
Sollten Sie nicht decrypyt das Passwort.
Wenn der Benutzer erstellt ein Passwort, sollten Sie generieren einen hash (dh: ein Wert, von dem das Passwort kann nicht rekonstruiert werden)
Wenn der Benutzer versucht, sich anzumelden, Sie sollten vergleichen Sie die hash-Werts des angegebenen Kennworts mit dem gespeicherten hash.
InformationsquelleAutor podiluska