vb.net验证密码是否复杂的方法_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 Web 应用程序安全性。

通过添加额外的复杂性检查,您可以改进 ValidatePassword 函数的准确性:

依据用户的名称、用户标识符和应用程序定义的字典来比较密码及其子字符串。此外,在执行比较时,将看起来类似的字符视为相同字符。例如,将字母“l”和“e”视为与数字“1”和“3”相同的字符。

如果只有一个大写字符,请确保它不是密码的第一个字符。

确保密码的最后两个字符是字母字符。

不允许这样的密码:其中的所有符号都是通过键盘最上面的一排键输入的。

时间: 2024-07-31 13:43:45

vb.net验证密码是否复杂的方法_vb.net的相关文章

VB打开与保存txt文件的方法_vb

本文实例讲述了VB打开与保存txt文件的方法.分享给大家供大家参考.具体如下: Private Sub cmdsave_Click() Dim filelocation As String ' loads save as box commondialog1.ShowSave filelocation = commondialog1.FileName ' append saves over file if it assists Open filelocation For Append As #1

VB.NET获取文件默认图标的方法_vb.net

本文实例讲述了VB.NET获取文件默认图标的方法.分享给大家供大家参考.具体如下: 该段代码帮助你获取计算机上的任何文件的默认图标,使用Shell32.dll. Private Structure SHFILEINFO Public hIcon As IntPtr Public iIcon As Integer Public dwAttributes As Integer <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _ Public

VB实现按行读取文本文件的方法_vb

本文实例讲述了VB实现按行读取文本文件的方法.分享给大家供大家参考.具体如下: '(general declaration) Dim nFileNum As Integer, sText As String, sNextLine As String, lLineCount As Long '================================== Private Sub Command1_Click() ' Get a free file number nFileNum = Free

实现网页密码验证的两个基本方法

   我们在访问一些网站时,经常会碰到需要输入"用户名和密码"的网页,用户名和密码的验证给网站的安全带来保障,一般网页的安全设置以目录为单位,通过设置目录的属性可以保证网站的安全,这样的网页是如何制作出来的呢? 下面笔者将介绍在网页设计中密码验证的两种方法,希望能给网页设计者有所帮助. 一.使用IIS所提供的工具 如果设计者是管理员级的用户,我们可以用一种简单的方法来实现密码验证.假设你安装的Web服务器是IIS,我们可以通过IIS所提供的"Internet服务管理员&quo

在客户端验证密码强度[2],兼容FireFox和IE

之前发过一个关于用JavaScript验证密码强度的,程序很简洁,只用了一个正则便能验证所有情况,但是因为利用了取巧的方法,所以只能在IE中使用,在FF中失效,现在修改一下做一个兼容的版本. 规则如下(分四个等级,等级超高强度越高): 0. 密码为空. 1. 密码长度小于六位.或者密码只有一种组合. 2. 密码长度大于五位, 且有两种组合. 3. 密码长度大于五位, 且有三种组合. 4. 密码长度大于五位,,且有四种组合. 四种组合指 数字,小写字母,大写字母,其它字符 源代码如下: 以下为引用

php验证用户名是否以字母开头与验证密码实例

 本文实例讲述了php验证用户名是否以字母开头与验证密码的方法.分享给大家供大家参考.具体如下: 验证用户名是否以字母开头与验证密码只能为数字和字母的组合代码,三种常用验证函数:验证邮箱地址格式 ,验证密码只能为数字和字母的组合以及验证用户名是否以字母开头代码,这是用户注册时或提交表单时会用的. 代码如下: function is_email($email)  {    if (preg_match("/[a-za-z0-9]+@[a-za-z0-9]+.[a-z]{2,4}/",$e

php验证用户名是否以字母开头与验证密码实例_正则表达式

本文实例讲述了php验证用户名是否以字母开头与验证密码的方法.分享给大家供大家参考.具体如下: 验证用户名是否以字母开头与验证密码只能为数字和字母的组合代码,三种常用验证函数:验证邮箱地址格式 ,验证密码只能为数字和字母的组合以及验证用户名是否以字母开头代码,这是用户注册时或提交表单时会用的. 复制代码 代码如下: function is_email($email)  {    if (preg_match("/[a-za-z0-9]+@[a-za-z0-9]+.[a-z]{2,4}/"

Laravel 默认重置密码功能代码重构方法

需要使用laravel搭建一个后台内容管理系统,但是laravel默认的登陆注册不能满足目前的需求,重置密码的话因为是用在后台,并且不需要发送邮件进行重置,所以默认的重置密码肯定是不行的. 1.首先确定重置密码的路由 我们在安装好laravel的时候默认生成的重置密码是在用户未登录的情况下进行的.所以使用原来的控制器是不可行的,并且原有的重置密码,并不需要查看原始密码是否正确,而是通过邮件来进行直接更改密码,所以控制器方法的话,我们也需要重新写个.我们使用 php artisan make:co

用JavaScrip正则表达式验证form表单的方法

document:标签之间 location:url history:前进后退 <html> <head> <script type="text/javascript"> function show() { //弹出一个提示框 window.alert("hh"); } //将show方法绑定到按钮上 window.onload=function() { //定位到按钮 var buttonElement=document.for