vb.net驗(yàn)證密碼是否復(fù)雜的方法
可在安全的系統(tǒng)中使用密碼來(lái)向用戶(hù)授權(quán)。但是,密碼必須難于被未授權(quán)用戶(hù)猜測(cè)出來(lái)。攻擊者可以使用一種“字典攻擊”程序,該程序?qū)⒈闅v一本字典(或不同語(yǔ)言的多本字典)中的所有單詞,并測(cè)試是否有任何單詞就是用戶(hù)的密碼。諸如“Yankees”或“Mustang”等弱密碼可被很快猜測(cè)出來(lái)。諸如“?You'L1N3vaFiNdMeyeP@sSWerd!”等強(qiáng)密碼被猜測(cè)出來(lái)的可能性要小很多。密碼保護(hù)系統(tǒng)應(yīng)確保用戶(hù)選擇強(qiáng)密碼。
強(qiáng)密碼很復(fù)雜(包含大寫(xiě)、小寫(xiě)、數(shù)字和特殊字符的組合),并且不是單詞。此示例演示如何驗(yàn)證復(fù)雜性。
示例
''' <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
通過(guò)傳遞包含該密碼的字符串來(lái)調(diào)用此方法。
此示例需要:
訪問(wèn) System.Text.RegularExpressions 命名空間的成員。如果沒(méi)有在代碼中完全限定成員名稱(chēng),請(qǐng)?zhí)砑?Imports 語(yǔ)句。有關(guān)更多信息,請(qǐng)參見(jiàn) Imports 語(yǔ)句(.NET 命名空間和類(lèi)型)。
安全性
如果要在網(wǎng)絡(luò)中轉(zhuǎn)移密碼,您需要使用安全的方法來(lái)傳輸數(shù)據(jù)。有關(guān)更多信息,請(qǐng)參見(jiàn) ASP.NET Web 應(yīng)用程序安全性。
通過(guò)添加額外的復(fù)雜性檢查,您可以改進(jìn) ValidatePassword 函數(shù)的準(zhǔn)確性:
依據(jù)用戶(hù)的名稱(chēng)、用戶(hù)標(biāo)識(shí)符和應(yīng)用程序定義的字典來(lái)比較密碼及其子字符串。此外,在執(zhí)行比較時(shí),將看起來(lái)類(lèi)似的字符視為相同字符。例如,將字母“l(fā)”和“e”視為與數(shù)字“1”和“3”相同的字符。
如果只有一個(gè)大寫(xiě)字符,請(qǐng)確保它不是密碼的第一個(gè)字符。
確保密碼的最后兩個(gè)字符是字母字符。
不允許這樣的密碼:其中的所有符號(hào)都是通過(guò)鍵盤(pán)最上面的一排鍵輸入的。
上一篇:利用計(jì)劃任務(wù)和VBS腳本實(shí)現(xiàn)自動(dòng)WEB共享文件夾里的文件
欄 目:vb
下一篇:emule自動(dòng)關(guān)機(jī)腳本
本文標(biāo)題:vb.net驗(yàn)證密碼是否復(fù)雜的方法
本文地址:http://mengdiqiu.com.cn/a1/vb/7626.html
您可能感興趣的文章
- 01-10VBScript教程 第十三課 VBScript與窗體
- 01-10打開(kāi)QQ并且讓它自己輸入用戶(hù)名和密碼的vbs腳本
- 01-10用vbscript防止本地用戶(hù)更改其密碼
- 01-10vbscript和javascript版的15位, 18位的身份證號(hào)碼的驗(yàn)證函數(shù).以及根據(jù)
- 01-10用vb和vbs 破解flashxp的密碼的代碼
- 01-10VB.net常用字符和日期等函數(shù)
- 01-10vb.net發(fā)布水晶報(bào)表程序步驟
- 01-10Imail密碼加密算法及VBS實(shí)現(xiàn)
- 01-10vbs之使用Internet Explorer 屏蔽密碼
- 01-10海陽(yáng)頂端網(wǎng)進(jìn)百度blog必須輸入密碼的vbscript代碼


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱(chēng)qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
隨機(jī)閱讀
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改