2013-10-31 2 views
1

내 응용 프로그램에 기본 전자 메일 및 암호 양식을 디자인하고 있습니다. 그것은 연결된 데이터베이스에있는 사용자 이름과 암호를 사용합니다. 1 가지 문제가 발생합니다. 어떻게 대소 문자를 구분할 수 있습니까? 마찬가지로 예를 들면 :대소 문자 구별의 SQL

수정 세부 사항 : 이메일 : [email protected] 암호 : gordan123는 암호가있을 수 있습니다 그러나

: 등 Gordan123, GORDAN123 및 GoRdAn123가 어떻게 그것을해야합니까 그것은 단지를 받아들이도록 대/소문자 구분을 고려하여 데이터베이스에 하나 있습니까?

죄송합니다.이 문제를 더 잘 설명하는 방법을 모르겠습니다. 코드는 다음과 같습니다.

SQL_Str = "CREATE TABLE Table_UserDetails (UserImageLocation TEXT, FirstName VARCHAR(25), LastName VARCHAR(25), Gender VARCHAR(6), EmailAddress VARCHAR(40) PRIMARY KEY, UserPassword VARCHAR(25))" 
     dbCommand = New OleDbCommand(SQL_Str, dbConnector) 
     dbCommand.ExecuteNonQuery() 

Private Sub BtnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLogin.Click 
    If LoginDetailsSearch() = True Then 
     FormMain.Show() 
    Else 
     MsgBox("The E-Mail address or password you entered is not valid, please check your entries and try again.", MsgBoxStyle.Critical, "Error") 
    End If 

End Sub 
Function LoginDetailsSearch() As Boolean 
    dbConnector.Open() 
    SQL_Str = "SELECT * FROM Table_UserDetails" 

    dbDataAdapter = New OleDbDataAdapter(SQL_Str, dbConnector) 
    dbDataAdapter.Fill(dbDataSet, "Users") 

    For Each Record In dbDataSet.Tables("Users").Rows 
     If txtEmail.Text = Record.Item(4) And txtPassword.Text = Record.Item(5) Then 
      SelectedUserFirstName = Record.Item(1) 
      SelectedUserLastName = Record.Item(2) 
      dbConnector.Close() 
      Return True 
     End If 
    Next 

    dbConnector.Close() 
    Return False 
End Function 

답변

5

암호를 일반 텍스트로 저장하지 마십시오. 비밀 번호의 해시 또는 소금에 절인 해시를 저장하고 해시를 비교하십시오.

+1

일반 텍스트로 저장하지 않으려면 다음을 입력하십시오. – Randy

+0

이 시스템을 안전하게 만들려고하지 않습니다. 단지 비교를하고 올바르게 작업하기를 원합니다. – user2177940

+4

해시를 사용하면 대소 문자를 구분할 필요가 없습니다. 그들은 다른 해시를 생성합니다. 처음부터 보안이 유지되므로 구현하기가 더 쉬울 것입니다. – Tim