- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的任务是创建一个 Visual Basic 随 secret 码生成器。我想出了下面的方法,它可以工作,但是它的密码标准有点粗糙。我希望它生成的每个密码至少包含 1 个数字(大写和小写)。然而,我如何编码它会生成一个随机组合,这通常会导致错过其中一个标准。
我自己也玩过一次游戏,我打算有三个字符串,一个是大写字母,一个是小写字母,第三个是数字。一旦它拥有其中之一,它将使用我的代码生成密码的其余部分。这听起来不太干净,而且我在这样做时遇到了问题。
任何人都可以帮助我指出正确的方向或协助使用下面的代码。密码长度必须介于 6 到 20 个字符之间。
提前致谢
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox2.Text = GenerateCode()
End Sub
Private Function GenerateCode() As Object
Dim intRnd As Object
Dim intStep As Object
Dim strName As Object
Dim intNameLength As Object
Dim intLength As Object
Dim strInputString As Object
strInputString = "1234567890ABCDEFGHIJKLMEOPQRSTUWXYZabcdefghijklmnopqrstuvwxyz"
intLength = Len(strInputString)
Randomize()
strName = ""
'Check for valid numeric entry
If Integer.TryParse(TextBox1.Text, intNameLength) And intNameLength >= 6 And intNameLength <= 20 Then
For intStep = 1 To intNameLength
intRnd = Int((intLength * Rnd()) + 1)
strName = strName & Mid(strInputString, intRnd, 1)
Next
GenerateCode = strName
Else
TextBox1.Text =("Please enter a valid password length")
End If
End Function
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
My.Computer.Clipboard.SetText(TextBox2.Text)
End Sub
Private Sub TextBox1_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter
TextBox1.Text = ""
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class
==========更新==========
对,我稍微改变了我的代码,所以我现在得到了三个包含不同字符的字符串,1 个代表大写字母,1 个代表小写字母,1 个代表数字。
这使我能够在表单中拥有复选框功能,这是一个优点。我已经玩过代码了,它现在根据我在复选框中选择的内容生成密码,正如我所说,这很棒,但是我不能总是保证如果我选择数字、上限和下限,我将获得包含所有三个的密码,有时即使所有三个框都被选中,密码也只包含数字。
猜测这与我只是要求它使用我给它的字符生成随 secret 码有关,并且没有验证它是否使用了所有三个选项。
对此的任何帮助都会很棒。我正在努力,我不只是发帖并希望有人能为我做这项工作。如果有人能指出我正确的方向,那就太好了。
这是我的新代码。
Public Function GenerateCode()
Dim intRnd As Integer
Dim intStep As Integer = Nothing
Dim strname As String
Dim intlength As Integer
Dim strinputstring As String = ""
Dim Numbers As String = "12345678901234567890"
Dim Lower As String = "abcdefghijklmnopqrstuvwxyzyz"
Dim Upper As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZYZ"
Dim intnamelength As Integer = 1
If CheckBox1.Checked Then strinputstring &= Lower
If CheckBox2.Checked Then strinputstring &= Numbers
If CheckBox3.Checked Then strinputstring &= Upper
intlength = Len(strinputstring)
Integer.TryParse(NumericUpDown1.Text, intnamelength)
Randomize()
strname = ""
For inStep = 1 To intnamelength
intRnd = Int(Rnd() * intlength) + 1
strname = strname & Mid(strinputstring, intRnd, 1)
Next
Return strname
End Function
最佳答案
这不依赖于 UI 控件,也不使用 NET 之前的遗留 VB 函数。相反,变量会传递给生成器,因此它与 UI 无关。它也不使用As Object
,因为字符串就是字符串。
<Flags>
Private Enum PasswordParts
Upper = 1
Lower = 2
Numerals = 4
All = 7
End Enum
Private Shared RNG As New Random()
Private Shared Numerals As String = "0123456789"
Private Shared Upper As String = "ABCDEFGHIJKLMNPQRSTUVWXYZYZ"
Private Shared Lower As String = "abcdefghijkmnopqrstuvwxyzyz"
Private Function GeneratePassword(length As Int32,
Optional pwparts As PasswordParts = PasswordParts.All) As String
Dim PWCharPool As String = ""
Dim PW As New List(Of String)()
' check the requested length
If length < 6 Then length = 6
If length > 20 Then length = 20
' build the pool and add the first of required characters
' for assure minimum conformance
If pwparts.HasFlag(PasswordParts.Lower) Then
PW.Add(Lower(RNG.Next(0, Lower.Length)))
PWCharPool &= Lower
End If
If pwparts.HasFlag(PasswordParts.Upper) Then
PW.Add(Upper(RNG.Next(0, Upper.Length)))
PWCharPool &= Upper
End If
If pwparts.HasFlag(PasswordParts.Numerals) Then
PW.Add(Numerals(RNG.Next(0, Numerals.Length)))
PWCharPool &= Numerals
End If
' pick the rest of the elements
For n As Int32 = PW.Count To length - 1
PW.Add(PWCharPool(RNG.Next(0, PWCharPool.Length)))
Next
' shuffle the result so that the
' first 1-3 chars are not predictable
Shuffle(PW, RNG)
' create a string from the result
Return String.Join("", PW)
End Function
L
或大写的 O
。用户会将与0
和1
混淆,因此要么删除它们,要么删除0
和1
(或两者)If
语句(不是 block ):只需始终选择在将它们添加到池中之前,从每个列表中选择一个。您也不需要 Enum
或参数。我根据问题中的代码留下了它们
StringBuilder
代替 List(of String)
,但字符串太短,除非运行,否则实际上不会节省任何时间它循环了很多很多次,即使如此,节省的时间也是微乎其微的。 测试它:
Dim enumValues = [Enum].GetValues(GetType(PasswordParts)).Cast(Of Int32)()
For n As Int32 = 1 To 1000
Dim style = CType(enumValues(RNG.Next(0, 4)), PasswordParts)
Dim pwLen = RNG.Next(6, 21)
Dim PW = GeneratePassword(pwLen, style)
' get riled up if the length does not match
Debug.Assert(PW.Length = pwLen)
Console.WriteLine("style: {0} pw: '{1}' (len={2})", style, PW, PW.Length)
Next
示例输出:
style: Upper pw: 'QFHGPLIEEYPRP' (len=13)
style: All pw: 'Z9Y3CoW' (len=7)
style: Lower pw: 'tyghanjzudhhorfmvjr' (len=19)
style: All pw: 'XyY3q10N6S' (len=10)
style: Upper pw: 'IOZGTTQTPCYLKGEFRZ' (len=18)
style: All pw: '7t5CNMUM0GdWb' (len=13)
style: Upper pw: 'YIFXHRKEICOHXEUX' (len=16)
然后,洗牌的助手(这在某种程度上是可选的):
' Standared FY shuffle for List(Of T)
Public Sub Shuffle(Of T)(items As List(Of T), rnd As Random)
Dim temp As T
Dim j As Int32
For i As Int32 = items.Count - 1 To 0 Step -1
' Pick an item for position i.
j = rnd.Next(i + 1)
' Swap them.
temp = items(i)
items(i) = items(j)
items(j) = temp
Next i
End Sub
<小时/>
最大的问题是没有人能记住这样的密码,因此它们被贴在显示器或键盘底部。更好的方法是让用户选择 PW,然后通过检查他们选择的字符串的长度和内容来验证它是否符合任何规则。这将允许 my~MuffyDoodle123
或一些用户可以记住的东西。也许迫使他们定期更改它,或者添加一个 TrashCan
来存储用户的旧密码,这样他们就无法在 6 或 9 个月内重复使用相同的密码。
自动生成令人难忘的密码的一种方法是使用文字。创建一个包含数千个形容词和副词的列表以及另一个包含数千个名词的列表(比听起来容易 - 有在线生成器),您可以创建头韵组合加上特殊字符:
Rancid3Rain
Withered$Whisper
Creamy/Cotton
Enduring/Empire
Maximum7Mist
Greasy/Glory
Vaporized_Vision
Toxic!Tears
Angry!Abacus
“困难”部分是使用集中列表并丢弃使用的单词,这样生成的密码中就不会出现重复的单词。只有当其中一个队列的数量变少时,您才会重新开始。
关于.net - Visual Basic 密码生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41459165/
Internal Server Error: /admin/account/customuser/add/ Traceback (most recent call last): File "C:\
有问题!虽然我发现几乎相似的线程但没有帮助:( 我编写了一个 php 脚本来从我的 MySQL 数据库中获取注册用户的数量。该脚本在我的本地主机上运行良好;它使用给定的用户名、密码和主机名,分别是“r
我正在做一项基于密码的作业,我将 key 和消息放在单独的数组中。我想创建第三个数组,其中包含围绕消息大小的 key ,如下所示: message keykeyk 我已经在这个问题上苦苦挣扎了一段时间
我的几个客户要求我实现图形密码检查器,例如 关于如何实现这种 UI 有什么想法吗? 最佳答案 试着看看这个:https://code.google.com/p/android-lockpattern/
我正在使用 MAMP,每次登录 phpMyAdmin 时,都会收到以下错误/警告消息: the configuration file now needs a secret passphrase (bl
我正在尝试通过将 Visual Studio 2013 连接到我的测试机来调试 WDF 驱动程序。它创建一个名为 WDKRemoteUser 的用户,并在进行测试时尝试自动登录。有人知道这个用户的密码
使用具有指定用户名和密码的 SVN 提交。我希望服务器抛出错误;所以我可以告诉我的用户他/她的密码错误。 相反,在使用错误密码提交后: svn commit "test_file.txt" --use
我正在尝试实现 friend 推荐。 它从节点“你”开始。而且,我想找到节点“安娜”。 换句话说,这是我的两个或更多 friend 共同认识的人。上面的示例节点是 Anna。 如果您的帮助,我将不胜感
我都尝试过 wget --user=myuser --password=mypassword myfile 和 wget --ftp-user=myuser --ftp-password=mypass
我的一位用户提示说,每当他尝试使用默认管理界面(Django 的管理员)添加新用户(auth.User)时,新用户名和密码都会自动填充他自己的。 问题是他在登录时要求 Firefox 记住他的用户名/
我们正在开发一款应用(当然)用于应用购买 (IAP)。我已完成指南中的所有操作以启用 iap,并且一切正常,直到我想要购买为止。 部分代码: MainViewController.m -(vo
我试图创建两个可选匹配项的并集(如下所示),但我得到的不是并集,而是两者的交集。我应该如何更改此查询以获得所需的联合? optional match (a:PA)-[r2:network*2]-(b:
我想将Ansible用作另一个Python软件的一部分。在该软件中,我有一个包含其用户名/密码的主机列表。 有没有一种方法可以将SSH连接的用户/密码传递给Ansible ad-hoc命令或以加密方式
嗨,我在使用xampp的Apache Web服务器上收到错误500。直到我使用.htaccess,.htpasswd文件,错误才出现。我搜索了,但找不到语法错误。我只有1张图片和要保护的索引文件。以下
我一直使用它来编辑用户帐户信息: $this->validate($request, [ 'password' => 'min:6', 'password_confirmation'
我需要使用InstallUtil来安装C# Windows服务。我需要设置服务登录凭据(用户名和密码)。这一切都需要默默地完成。 有没有办法做这样的事情: installutil.exe myserv
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
如果我有一个随机的、16 个字符长的字母数字盐(不同大小写),它是为每个用户生成和存储的,我是否还需要一个站点范围的盐? 换句话说,这样好吗? sha1($user_salt . $password)
我正在开发一个空白程序,该程序将允许用户创建一个帐户,以便他们可以存储其余额和提款/存款。用户输入用户名和密码后,如何存储这些信息以便用户可以登录并查看其余额?我不一定要尝试使其非常安全,我只是希望能
我正在尝试寻找一种通用方法来搜索没有链接到另一个节点或节点集的节点或节点集。例如,我能够找到特定类型(例如 :Style)的所有节点,这些节点以某种方式连接到一组特定的节点(例如 :MetadataR
我是一名优秀的程序员,十分优秀!