Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在vb中创建登录密码_Vb.net_Linq - Fatal编程技术网

Vb.net 如何在vb中创建登录密码

Vb.net 如何在vb中创建登录密码,vb.net,linq,Vb.net,Linq,嗨,我已经在互联网上搜索了三个星期了,关于如何用加密密码创建登录界面。我是一个加密密码文本框的高手,但我不知道如何实现它。我正在使用linq to sql dbml连接到基于文本的数据,只有我能够获得它才能创建,但我希望它更安全,更专业地使用加密的数据。顺便说一下,我使用向导创建数据库,而不是硬编码,这是我知道的方法。我完全不懂编程,任何帮助都可以。谢谢 第7版中的公共类用户\u日志\u Dim admin作为新的GeneralDataContext Private Sub User_Log_I

嗨,我已经在互联网上搜索了三个星期了,关于如何用加密密码创建登录界面。我是一个加密密码文本框的高手,但我不知道如何实现它。我正在使用linq to sql dbml连接到基于文本的数据,只有我能够获得它才能创建,但我希望它更安全,更专业地使用加密的数据。顺便说一下,我使用向导创建数据库,而不是硬编码,这是我知道的方法。我完全不懂编程,任何帮助都可以。谢谢

第7版中的公共类用户\u日志\u Dim admin作为新的GeneralDataContext

Private Sub User_Log_InBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Me.Validate()
    Me.User_Log_InBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.User_Log_In_DataSet)

End Sub

Private Sub User_Log_In_v7_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'User_Log_In_DataSet.User_Log_In' table. You can move, or remove it, as needed.
    'Me.User_Log_InTableAdapter.Fill(Me.User_Log_In_DataSet.User_Log_In)

End Sub

Private Sub btnLogIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogIn.Click
    Try
        Dim check = From Storage In admin.User_Log_Ins _
                  Where UsernameTextBox.Text = Storage.Username And PasswordTextBox.Text = Storage.Password

        If Not check.Count = 0 Then
            Membership_Information.Show()
            Me.Hide()
            UsernameTextBox.Text = ""
            PasswordTextBox.Text = ""
        Else
            MsgBox("Please check username or password and try again", MsgBoxStyle.Exclamation, "")
            UsernameTextBox.Text = ""
            PasswordTextBox.Text = ""
        End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub
这是我可以从另一个教程加密的代码

导入System.Security.Cryptography 导入系统文本

公开课表格1 Dim DES作为新的TripleDESCryptoServiceProvider Dim MD5作为新的MD5CryptoServiceProvider

'hash function
Function MD5Hash(value As String) As Byte()
    Return MD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(value))
End Function

'Encryption
Function Encrypt(input As String, Key As String) As String

    DES.Key = MD5Hash(Key)
    DES.Mode = CipherMode.ECB

    Dim buffer As Byte() = ASCIIEncoding.ASCII.GetBytes(input)

    Return Convert.ToBase64String(DES.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length))


End Function

密码应该是散列的,而不是加密的。最简单的办法就是得到BCrypt。就实现而言,MD5已经过时了。将密码传递到哈希方法中,并将结果存储在数据库中。然后,当您想要检查用户类型时,将其传递到has方法中,并将当前哈希值与存储在数据库中的哈希值进行比较,以确保它们是相同的。这就是为什么让用户输入两次密码很重要的原因(以确保他们在输入要散列的原始密码时没有输入错误)如果结果不成功,另一件事是不要明确告诉用户失败的原因。感谢各位的快速响应,先生。您能举一个例子,说明如何使用bcrypt和我当前的数据库结构,使用linq to sql访问用户帐户的数据库吗,我喜欢用你的建议来散列密码,一旦用户想登录密码文本框,它会比较散列码,如果你不介意的话,我目前的数据库只能保存字符串与实际密码文本,我知道这对黑客来说是非常高的风险。我使用向导创建数据库。干杯。密码应该是散列的而不是加密的。最简单的办法就是得到BCrypt。就实现而言,MD5已经过时了。将密码传递到哈希方法中,并将结果存储在数据库中。然后,当您想要检查用户类型时,将其传递到has方法中,并将当前哈希值与存储在数据库中的哈希值进行比较,以确保它们是相同的。这就是为什么让用户输入两次密码很重要的原因(以确保他们在输入要散列的原始密码时没有输入错误)如果结果不成功,另一件事是不要明确告诉用户失败的原因。感谢各位的快速响应,先生。您能举一个例子,说明如何使用bcrypt和我当前的数据库结构,使用linq to sql访问用户帐户的数据库吗,我喜欢用你的建议来散列密码,一旦用户想登录密码文本框,它会比较散列码,如果你不介意的话,我目前的数据库只能保存字符串与实际密码文本,我知道这对黑客来说是非常高的风险。我使用向导创建数据库。干杯