2014-09-28 28 views
-2

我想創建一個登錄表單,其中的密碼字段是區分大小寫的例子,如果我的密碼是「PassWord」,它將只接受關鍵字「PassWord」而不接受「password」或者「密碼」等關鍵字,我希望它的字符敏感的感謝,請幫助我使用數據庫MS ACCESS感謝這裏我是一個新的編程是我的代碼在VB 10中創建一個區分大小寫的登錄表單

Private Sub btnLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLog.Click 
    Try 
     Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\NIASecurity.accdb") 
     Dim cmd As OleDbCommand = New OleDbCommand("SELECT [Username] FROM [Security] WHERE [Username] = @User and Password [email protected] ", con) 
     cmd.Parameters.AddWithValue("@User", txtUser.Text) 
     cmd.Parameters.AddWithValue("@Pass", txtPass.Text) 
     con.Open() 
     Dim sdr As OleDbDataReader = cmd.ExecuteReader() 
     If sdr.Read Then 
      If txtPass.Text = sdr(0) Then 
       MessageBox.Show("Welcome") 
       Dim win As New frmAdd 
       win.MdiParent = frmMDI 
       win.Show() 
       Me.Close() 
      Else 
       MsgBox("Invalid name or password!") 

      End If 
     End If 


    Catch ex As Exception 
     MessageBox.Show("Invalid name or password!") 
    End Try 
End Sub 
+0

請請不要以純文本存儲您的密碼。使用密碼散列法(bcrypt,PBKDF2,...)如果數據庫遭到破壞,您的用戶不應該擔心在其他地方更改密碼。 – 2014-09-28 07:42:06

+0

這麼做?請? – 2014-09-28 09:10:15

回答

0

我可以說你保存數據庫的密碼,您必須保存密碼帶散列的數據AlgorithmMD5SHA1
當用戶輸入登錄密碼時,輸入密碼的哈希串並比較t他的字符串密碼保存在數據庫

public static void HashPassword(string Password, out string Salt, out string Hash) 
    { 
     System.Security.Cryptography.SHA1Managed sha = new System.Security.Cryptography.SHA1Managed(); 
     Random rnd = new Random(); 
     byte[] s = new byte[20]; 
     rnd.NextBytes(s); 
     Salt = Convert.ToBase64String(s); 
     System.Text.UTF8Encoding u = new UTF8Encoding(); 
     byte[] pass = u.GetBytes(Password); 
     byte[] all = new byte[pass.Length + s.Length]; 
     Array.Copy(pass, all, pass.Length); 
     Array.Copy(s, 0, all, pass.Length, s.Length); 
     Byte[] H = sha.ComputeHash(all); 
     Hash = Convert.ToBase64String(H); 
    } 

    public bool IsPasswordCorrect(string Password, string Salt, string Hash) 
    { 
     System.Security.Cryptography.SHA1Managed sha = new System.Security.Cryptography.SHA1Managed(); 
     byte[] s = Convert.FromBase64String(Salt); 
     System.Text.UTF8Encoding u = new UTF8Encoding(); 
     byte[] pass = u.GetBytes(Password); 
     byte[] all = new byte[pass.Length + s.Length]; 
     Array.Copy(pass, all, pass.Length); 
     Array.Copy(s, 0, all, pass.Length, s.Length); 
     Byte[] H = sha.ComputeHash(all); 
     return (Hash == Convert.ToBase64String(H)); 
    } 

現在你必須使用HashPassword方法給哈希的鹽和保存散列和鹽,以分貝爲每一位用戶。
當想檢查密碼使用IsPasswordcorrect方法

+0

我可以給你發個例子 – 2014-09-28 07:42:54

+0

你能不能修改我的代碼我不熟悉你給我的代碼非常感謝你,或者我可以把代碼行放在我的代碼裏再次感謝更多的權力新手在這裏 – 2014-09-28 09:04:18

+0

我' m使用VISUAL BASIC 2010 – 2014-09-28 09:07:48

相關問題