Я пытаюсь тренироваться, как можно перебирать все возможности строки, но я, кажется, не очень хорошо.Вручную силу пароля VBA
Я до сих пор помещал набор символов в массив, но я не могу, чтобы жизнь меня обнимала меня, как я могу заставить его работать. У меня это так далеко, но мой мозг не может обойти его.
Может ли кто-нибудь пролить свет на правильный способ сделать это и, возможно, псевдокод, чтобы я мог создать свой собственный.
Function passwordGenerator(length As Integer)
Dim characters() As String
Dim x As Integer
Dim y As Integer
Dim p As Integer
Dim t As Integer
Dim oldpassword As String
Dim newcharacter As String
ReDim Preserve characters(1)
For x = 48 To 90
ReDim Preserve characters(UBound(characters) + 1)
characters(UBound(characters) - 1) = VBA.Chr(x)
Next x
y = 1
Do
For x = 1 To length
oldpassword = generateBlank(x)
p = 1
For t = 1 To p
newpassword = WorksheetFunction.Replace(oldpassword, t, 1, characters(y))
For y = 1 To UBound(characters)
newpassword = WorksheetFunction.Replace(oldpassword, p, 1, characters(y))
Debug.Print newpassword
p = p + 1
Next y
Next t
Next x
Loop
End Function
Function generateBlank(length As Integer)
Dim x As Integer
For x = 1 To length
generateBlank = generateBlank & "A"
Next x
End Function
EDIT :::
Я отредактировал мой код, но этот путь я должен знать длину и что не создает эффективный алгоритм? Любая помощь?
Function passwordGenerator()
Dim characters() As String
Dim x As Integer
Dim y As Integer
Dim p As Integer
Dim t As Integer
Dim w As Integer
Dim e As Integer
Dim r As Integer
Dim u As Integer
Dim oldpassword As String
Dim newcharacter As String
ReDim Preserve characters(1)
For x = 48 To 90
ReDim Preserve characters(UBound(characters) + 1)
characters(UBound(characters) - 1) = VBA.Chr(x)
Next x
y = 1
oldpassword = generateBlank(3)
For x = 1 To UBound(characters)
oldpassword = WorksheetFunction.Replace(oldpassword, 1, 1, characters(x))
For t = 1 To UBound(characters)
oldpassword = WorksheetFunction.Replace(oldpassword, 2, 1, characters(t))
For y = 1 To UBound(characters)
oldpassword = WorksheetFunction.Replace(oldpassword, 3, 1, characters(y))
For q = 1 To UBound(characters)
oldpassword = WorksheetFunction.Replace(oldpassword, 4, 1, characters(q))
For w = 1 To UBound(characters)
oldpassword = WorksheetFunction.Replace(oldpassword, 5, 1, characters(w))
Debug.Print oldpassword
DoEvents
Next w
Next q
Next y
Next t
Next x
End Function
ли мы предполагаем, что вы собираетесь использовать свои силы для хорошего? ;) – guitarthrower
Ну, я уверен, что это был бы медленный процесс, если бы я был в курсе, что это медленный процесс, но, увы, нет. Я нахожусь в пути интеллектуального открытия. haha –
Вы пытаетесь сгенерировать все возможные пароли с длиной 'n', используя предопределенный набор символов? – ja72