vb.net 암호 가 복잡 한 지 검증 하 는 방법

3823 단어 vb.net암호 인증
안전 한 시스템 에서 비밀 번 호 를 사용 하여 사용자 에 게 권한 을 부여 할 수 있 습 니 다.그러나 비밀 번 호 는 권한 이 부여 되 지 않 은 사용자 가 추측 하기 어 려 울 것 이다.공격 자 는 사전 공격 프로그램 을 사용 할 수 있 습 니 다.이 프로그램 은 사전(또는 서로 다른 언어의 여러 사전)의 모든 단 어 를 옮 겨 다 니 며 어떤 단어 가 사용자 의 비밀번호 인지 테스트 합 니 다.예 를 들 어'Yankees'나'Mustang'등 약 한 비밀 번 호 는 빠르게 추측 할 수 있다.예 를 들 면“?You'L1N3vaFiNdMeyeP@sSWerd!강 한 비밀번호 가 추 측 될 가능성 은 훨씬 적다.암호 보호 시스템 은 사용자 가 강 한 암 호 를 선택 하도록 확보 해 야 한다.강 한 암 호 는 매우 복잡 하 다.이 예 는 복잡성 을 어떻게 검증 하 는 지 보 여 준다.예시 

''' <summary>Determines if a password is sufficiently complex.</summary>
''' <param name="pwd">Password to validate</param>
''' <param name="minLength">Minimum number of password characters.</param>
''' <param name="numUpper">Minimum number of uppercase characters.</param>
''' <param name="numLower">Minimum number of lowercase characters.</param>
''' <param name="numNumbers">Minimum number of numeric characters.</param>
''' <param name="numSpecial">Minimum number of special characters.</param>
''' <returns>True if the password is sufficiently complex.</returns>
Function ValidatePassword(ByVal pwd As String, _
Optional ByVal minLength As Integer = 8, _
Optional ByVal numUpper As Integer = 2, _
Optional ByVal numLower As Integer = 2, _
Optional ByVal numNumbers As Integer = 2, _
Optional ByVal numSpecial As Integer = 2) _
As Boolean
' Replace [A-Z] with \p{Lu}, to allow for Unicode uppercase letters.
Dim upper As New System.Text.RegularExpressions.Regex("[A-Z]")
Dim lower As New System.Text.RegularExpressions.Regex("[a-z]")
Dim number As New System.Text.RegularExpressions.Regex("[0-9]")
' Special is "none of the above".
Dim special As New System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]")
' Check the length.
If Len(pwd) < minLength Then Return False
' Check for minimum number of occurrences.
If upper.Matches(pwd).Count < numUpper Then Return False
If lower.Matches(pwd).Count < numLower Then Return False
If number.Matches(pwd).Count < numNumbers Then Return False
If special.Matches(pwd).Count < numSpecial Then Return False
' Passed all checks.
Return True
End Function
Sub TestValidatePassword()
Dim password As String = "Password"
' Demonstrate that "Password" is not complex.
MsgBox(password & " is complex: " & ValidatePassword(password))
password = "Z9f%a>2kQ"
' Demonstrate that "Z9f%a>2kQ" is not complex.
MsgBox(password & " is complex: " & ValidatePassword(password))
End Sub
컴 파일 코드 는 이 암 호 를 포함 하 는 문자열 을 전달 하여 이 방법 을 호출 합 니 다.이 예제 에 서 는 System.Text.RegularExpressions 네 임 스페이스 에 접근 하 는 구성원 이 필요 합 니 다.코드 에 멤버 이름 을 완전히 제한 하지 않 았 다 면 Imports 문 구 를 추가 하 십시오.더 많은 정 보 는 Imports 구문(.NET 네 임 스페이스 와 유형)을 참조 하 십시오.보안 이 네트워크 에서 비밀 번 호 를 옮 기 려 면 안전 한 방법 으로 데 이 터 를 전송 해 야 합 니 다.더 많은 정 보 는 ASP.NET 웹 프로그램의 안전성 을 참조 하 십시오.추가 복잡성 검 사 를 통 해 ValidatePassword 함수 의 정확성 을 개선 할 수 있 습 니 다.사용자 의 이름,사용자 식별 자,응용 프로그램 이 정의 한 사전 에 따라 암호 와 하위 문자열 을 비교 할 수 있 습 니 다.또한 비 교 를 실행 할 때 비슷 해 보 이 는 문 자 를 같은 문자 로 본다.예 를 들 어 알파벳'l'과'e'를 숫자'1'과'3'과 같은 문자 로 본다.대문자 가 하나 밖 에 없다 면 비밀번호 의 첫 번 째 문자 가 아 닌 지 확인 하 십시오.암호 의 마지막 두 글자 가 알파벳 문자 인지 확인 하 세 요.이러한 암 호 는 허용 되 지 않 습 니 다.그 중의 모든 기 호 는 키보드 맨 위의 한 줄 키 를 통 해 입력 됩 니 다.

좋은 웹페이지 즐겨찾기