Password.aspx
1<%@ Page Language="C#" CodeBehind="Password.aspx.cs"
2 Inherits="MyFirstSite.Password" %>
3
4<!DOCTYPE html>
5<html>
6<head><title>Генератор паролей</title></head>
7<body>
8 <form id="form1" runat="server">
9
10 <h2>Генератор паролей</h2>
11
12 <p>Длина:
13 <asp:DropDownList ID="ddlLength" runat="server">
14 <asp:ListItem Value="6">6</asp:ListItem>
15 <asp:ListItem Value="8" Selected="True">8</asp:ListItem>
16 <asp:ListItem Value="12">12</asp:ListItem>
17 <asp:ListItem Value="16">16</asp:ListItem>
18 <asp:ListItem Value="20">20</asp:ListItem>
19 </asp:DropDownList>
20 </p>
21
22 <p>
23 <asp:CheckBox ID="chkUpper" runat="server"
24 Text="Заглавные (A-Z)" Checked="true" />
25 <asp:CheckBox ID="chkDigits" runat="server"
26 Text="Цифры (0-9)" Checked="true" />
27 <asp:CheckBox ID="chkSymbols" runat="server"
28 Text="Символы (!@#)" />
29 </p>
30
31 <asp:Button ID="btnGenerate" runat="server"
32 Text="Сгенерировать"
33 OnClick="BtnGenerate_Click" />
34
35 <p><asp:Label ID="lblPassword" runat="server"
36 Font-Size="20px" Font-Name="Consolas" /></p>
37 <p><asp:Label ID="lblStrength" runat="server" /></p>
38
39 </form>
40</body></html>
стр 13–19 — DropDownList с пятью вариантами. Selected="True" у «8» — значение по умолчанию.
стр 23–28 — три независимых CheckBox. Два включены по умолчанию (Checked="true").
стр 36 — Font-Size и Font-Name прямо в разметке — чтобы пароль был крупным и моноширинным.
Password.aspx.cs
1using System;
2using System.Drawing;
3
4namespace MyFirstSite
5{
6 public partial class Password : System.Web.UI.Page
7 {
8 protected void BtnGenerate_Click(object sender, EventArgs e)
9 {
10 // 1. Собираем набор символов
11 string chars = "abcdefghijklmnopqrstuvwxyz";
12
13 if (chkUpper.Checked)
14 chars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
15 if (chkDigits.Checked)
16 chars += "0123456789";
17 if (chkSymbols.Checked)
18 chars += "!@#$%&*?";
19
20 // 2. Получаем длину
21 int length = int.Parse(ddlLength.SelectedValue);
22
23 // 3. Генерируем пароль
24 Random rnd = new Random();
25 string password = "";
26
27 for (int i = 0; i < length; i++)
28 {
29 int index = rnd.Next(chars.Length);
30 password += chars[index];
31 }
32
33 lblPassword.Text = password;
34
35 // 4. Оценка надёжности
36 if (length <= 6)
37 {
38 lblStrength.Text = "Надёжность: слабый";
39 lblStrength.ForeColor = Color.Red;
40 }
41 else if (length <= 12)
42 {
43 lblStrength.Text = "Надёжность: средний";
44 lblStrength.ForeColor = Color.Orange;
45 }
46 else
47 {
48 lblStrength.Text = "Надёжность: сильный";
49 lblStrength.ForeColor = Color.Green;
50 }
51 }
52 }
53}
стр 11–18 — начинаем с a-z, потом дописываем символы в зависимости от галочек. Строка chars растёт.
стр 21 — int.Parse без TryParse — безопасно, потому что значение приходит из DropDownList, там только числа.
стр 24 — создаём генератор. new Random() — достаточно одного на весь метод.
стр 29 — rnd.Next(chars.Length) — случайное число от 0 до длины строки минус 1.
стр 30 — chars[index] — символ строки по индексу. Строка в C# — это массив символов.