Генератор паролей - Генерация пароля по запросу - PullRequest
0 голосов
/ 15 апреля 2019

Я работал над сценарием, который генерирует пароль с определенными символами определенной длины, но со случайными числами определенной длины.

Сценарий имеет графический интерфейс (это работа, яЯ закончу это в конце концов)Он просто дает тот же пароль, который генерирует его в первый раз.

Я искал в Интернете, как восстанавливать новый пароль при каждом нажатии кнопки, но я ничего не нашел.

Может кто-нибудь помочь с некоторыми советами?

Спасибо.

Сценарий:

    Function Button_Click()
{
    [System.Windows.Forms.MessageBox]::Show($DefinedLetters)
}
Function Generate-Form {

    Add-Type -AssemblyName System.Windows.Forms    
    Add-Type -AssemblyName System.Drawing

    # Build Form
    $Form = New-Object System.Windows.Forms.Form
    $Form.Text = "Password Generator"
    $Form.Size = New-Object System.Drawing.Size(200,200)
    $Form.StartPosition = "CenterScreen"
    $Form.Topmost = $True

    # Add Button
    $Button = New-Object System.Windows.Forms.Button
    $Button.Location = New-Object System.Drawing.Size(35,35)
    $Button.Size = New-Object System.Drawing.Size(120,23)
    $Button.Text = "Generate Password"

    $Form.Controls.Add($Button)

    #Add Button event 
    $Button.Add_Click({Button_Click})


    #Show the Form 
    $form.ShowDialog()| Out-Null 

} #End Function

# Password generator #

Function DefinedLetters
{
$DefinedLetters = 'Summer'
$numbers = 0..5
$array = @()
$array += $DefinedLetters.Split(',') | Get-Random -Count 4
$DefinedLetters += $numbers | Get-Random -Count 4
($DefinedLetters | Get-Random -Count $DefinedLetters.Count) -join ""
}

#Call the Function 
Generate-Form

Ответы [ 3 ]

0 голосов
/ 15 апреля 2019

Это не очень хороший метод генерации паролей, но вот версия вашего кода, которая генерирует «случайный» пароль каждый раз, используя 4 буквы из «лета» и 4 цифры из (0,1,2,3), 4,5):

# Password generator #

Function DefinedLetters {
    $DefinedLetters = 'Summer'
    $numbers = 0..5
    $array = @()
    $array += $DefinedLetters.ToCharArray() | Get-Random -Count 4
    $array += $numbers | Get-Random -Count 4
    ($array | Get-Random -Count $array.Count) -join ""
}

Function Button_Click() {
    $DefinedLetters = DefinedLetters 
    [System.Windows.Forms.MessageBox]::Show($DefinedLetters)
}

Function Generate-Form {
    Add-Type -AssemblyName System.Windows.Forms    
    Add-Type -AssemblyName System.Drawing

    # Build Form
    $Form = New-Object System.Windows.Forms.Form
    $Form.Text = "Password Generator"
    $Form.Size = New-Object System.Drawing.Size(200,200)
    $Form.StartPosition = "CenterScreen"
    $Form.Topmost = $True

    # Add Button
    $Button = New-Object System.Windows.Forms.Button
    $Button.Location = New-Object System.Drawing.Size(35,35)
    $Button.Size = New-Object System.Drawing.Size(120,23)
    $Button.Text = "Generate Password"

    $Form.Controls.Add($Button)

    #Add Button event 
    $Button.Add_Click({Button_Click})


    #Show the Form 
    $form.ShowDialog()| Out-Null 

} #End Function


#Call the Function 
Generate-Form
0 голосов
/ 15 апреля 2019
  1. Ваша функция DefinedLetters не работает / не может работать так, как вы предполагали
  2. Вы используете не функцию, а переменную для показа.

Function Button_Click(){
    [System.Windows.Forms.MessageBox]::Show((DefinedLetters))
}

Function Generate-Form {
   #... snipped for brevity ...
} 

Function DefinedLetters{
    (([char[]]'Summer' | Get-Random -Count 4) -join '')+
                 ((0..5| Get-Random -Count 4) -join '')  
}

#Call the Function 
Generate-Form

enter image description here

0 голосов
/ 15 апреля 2019

В Button_Click() вы просто ссылаетесь на переменную, которая не вызывает функцию. Вам необходимо присвоить функцию формы значения переменной, например:

Function Button_Click()
{
    $PW = DefinedLetters
    [System.Windows.Forms.MessageBox]::Show($PW)
}
...