使用C#(Random)随机数来制作随机字母数字混合密码生成器

0 篇文章 0 订阅

大家好,由于某些原因,我经常会需要使用一些字母与数字的混合密码

你们可能会说:随便输入一些字母与数字不就好了吗?

没错,对于一般人来说可能没啥关系

但对于我这种有强迫症的人来说,太痛苦了

每次要因为想一个好的密码而花掉很多不该花去的时间

所以决定下定决心写个程序来帮我完成想密码的过程

由于正在学习C#winfrom,所以,打算用C#来帮我完成这个程序

好了,废话不多说

我来说说完成这个程序的过程

首先,提到随机数
大家可能会想到Random这个类
对,我要说的就是这个

先晒几段核心代码

/// <summary>
/// 生成单个随机数字
/// </summary>
public int createNum()
{
    Random random = new Random();
    int num = random.Next(10);
    return num;
}
/// <summary>
/// 生成单个大写随机字母
/// </summary>
public string createBigAbc()
{
    //A-Z的 ASCII值为65-90
    Random random = new Random();
    int num = random.Next(65,91);
    string abc = Convert.ToChar(num).ToString();
    return abc;
}
/// <summary>
/// 生成单个小写随机字母
/// </summary>
public string createSmallAbc()
{
    //a-z的 ASCII值为97-122
    Random random = new Random();
    int num = random.Next(97, 123);
    string abc = Convert.ToChar(num).ToString();
    return abc;
}

看完代码后,我想大家应该看到了里面有个 ASCII值

那么这个到底是个什么东西呢?

待会儿说。。。。。。

接下来,我们开始使用Random来生成随机数

首先给Random类创建一个对象
使用对象来点出Random类的Next方法
下面是微软官方对这个方法的说明

public virtual int Next(int minValue, int maxValue);
//
// 摘要:
//      返回一个指定范围内的随机数。
//
// 参数:
//   minValue:
//     返回的随机数的下界(随机数可取该下界值)。
//
//   maxValue:
//     返回的随机数的上界(随机数不能取该上界值)。maxValue 必须大于等于 minValue。
//
// 返回结果:
//     一个大于等于 minValue 且小于 maxValue 的 32 位带符号整数,即:返回的值范围包括 
//     minValue 但不包括 maxValue。如果
//     minValue 等于 maxValue,则返回 minValue。
//
// 异常:
//   T:System.ArgumentOutOfRangeException:
//     minValue 大于 maxValue。

感觉有点蒙的童鞋我给你说下
就是这个方法可以传递两个参数进去
如果你想生成20到30的随机数
你就可以这样传递

random.Next(20, 31)

看了这个可能会问:为什么第二个参数不是30

因为官方已经说明了
返回的值范围包括
第一个参数 但不包括 第二个参数

好了,现在解决怎么随机出数字了

现在给你们说一下ASCII

ASCII(American Standard Code for Information Interchange,
美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要
用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码
系统,并等同于国际标准ISO/IEC 646。

我的个人理解就是每个字符在ASCII中都有一个固定的数字,想深入的可以
百度一下,这里就不用多讲了

下面我说一下大小写字母各个代表的 ASCII值

A-Z的 ASCII值为65-90
a-z的 ASCII值为97-122

然后用强转char类型来实现数字转换为字母就不用说了吧

强转很基础,这里就不讲了,不懂得自行问度娘吧

好了,现在解决怎么随机出大小写字母了

现在来解决把随机出来的字母或者数字拼接成密码

通过拼接让我联想到了StringBuilder这个类

那么怎么把一个个字符拼接进入StringBuilder这个类的对象中呢?

难道要我们一个个的打代码吗?

No。。。。。。

所以我这里用了for循环,相信大家对这个循环不陌生了吧

下面来晒一下怎么使用for循环和StringBuilder类来实现14位随机密码字符的拼接

//创建一个StringBuilder对象存储密码
StringBuilder sb = new StringBuilder();
//使用for循环把单个字符填充进StringBuilder对象里面变成14位密码字符串
for (int i = 0; i < 14; i++)
{
    Random random = new Random();
    //随机选择里面其中的一种字符生成
    switch (random.Next(3))
    {
         case 0:
             //调用生成生成随机数字的方法
             sb.Append(createNum());
             break;
         case 1:
             //调用生成生成随机小写字母的方法
             sb.Append(createSmallAbc());
             break;
         case 2:
             //调用生成生成随机大写字母的方法
             sb.Append(createBigAbc());
             break;
    }
}
return sb.ToString();

好了,到这里我的应用程序基本就完工了

程序改变未来,我们将要进入自动化的时代,一起加油,一起努力吧。。。。.。。。。

下面来晒几张应用程序完成图

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

Ok。。。。。。

这就是程序的完成图。。。。。。

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个简单的C#窗体随机数生成器的示例代: ```csharp using System; using System.Windows.Forms; namespace RandomNumberGenerator { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnGenerate_Click(object sender, EventArgs e) { int length = Convert.ToInt32(txtLength.Text); bool preventDuplicate = chkPreventDuplicate.Checked; bool sleep = chkSleep.Checked; RandomNumberGenerator generator = new RandomNumberGenerator(length, preventDuplicate, sleep); string result = generator.Generate(); txtResult.Text = result; } } public class RandomNumberGenerator { private int length; private bool preventDuplicate; private bool sleep; public RandomNumberGenerator(int length, bool preventDuplicate, bool sleep) { this.length = length; this.preventDuplicate = preventDuplicate; this.sleep = sleep; } public string Generate() { string result = string.Empty; Random random = new Random(); while (result.Length < length) { int randomNumber = random.Next(0, 36); char character = GetCharacter(randomNumber); if (!preventDuplicate || !result.Contains(character.ToString())) { result += character.ToString(); } if (sleep) { System.Threading.Thread.Sleep(1); } } return result; } private char GetCharacter(int randomNumber) { if (randomNumber < 10) { return (char)('0' + randomNumber); } else { return (char)('a' + randomNumber - 10); } } } } ``` 在窗体中,用户可以指定所需的随机数长度、是否防止重复以及是否需要线程休眠。生成随机数的方法是在RandomNumberGenerator类中实现的,该方法使用Random类生成随机数,并使用GetCharacter方法将数字转换为字母数字字符。如果用户选择了防止重复选项,则在生成随机数时检查结果中是否已经包含了当前字符。如果用户选择了线程休眠选项,则在生成每个字符之间暂停1毫秒。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值