C#生成用户密码(发帖挨砸记)
来源:互联网 发布:为什么淘宝口令打不开 编辑:程序博客网 时间:2024/04/29 20:41
前几天使用随机函数写了一个生成密码的程序,沾沾自喜之余发到论坛上,被人一顿猛砸。原来还有更简单的方法:Guid.NewGuid生成随机密码。
下面是链接:http://topic.csdn.net/u/20101119/02/b39eec84-728c-4a03-b9b1-ff9285cd1a62.html
下面是原文:
如果用户的密码丢失了,网站通常生成一个新的密码发到他的邮箱。我试着写了一个,请各位批评指正!
输入的参数是:level复杂程度,length密码长度。
其中密码复杂程度分为6级:0数字,1小写字母,2数字加小写字母,3数字加大小写字母,4加特殊字符,5更多特殊字符。
在一个Winform里放置一个按钮,三个文本框(一个为显示结果,两个为输入参数)。
private void button1_Click(object sender, EventArgs e)
{
int level =Convert.ToInt32(this.textBox2.Text);
int length = Convert.ToInt32(this.textBox3.Text);
this.textBox1.Text = GeneratePWD(level, length);
}
/// <summary>
/// Generate password for new user
/// </summary>
/// <param name="level">0 = digits only</param>
/// <param name="level">1 = lowercase alphabets only</param>
/// <param name="level">2 = num+lowercase</param>
/// <param name="level">3 = num+lowercase+uppercase</param>
/// <param name="level">4 = num+lowercase+uppercase+special characters(!@#$%&)</param>
/// <param name="level">5 = more special characters</param>
/// <param name="length">Length of password: from 3 to 12</param>
/// <returns></returns>
private string GeneratePWD(int level, int length)
{
int beginPosition = 0;
int endPosition = 100;
if (length < 3 || length > 12) length = 8;
switch (level)
{
case 0:
endPosition = 37;
break;
case 1:
beginPosition = 38;
endPosition = 63;
break;
case 2:
endPosition = 63;
break;
case 3:
endPosition = 89;
break;
case 4:
endPosition = 100;
break;
default:
endPosition = 109;
break;
}
char[] characters ={'0','0','1','1','1','1','2','2','2','2','3','3','3','3','4','4','4','4','5','5','5','5','6','6','6','6','7','7','7','7','8','8','8','8','9','9','9','9', //37
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',//63
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',//89
'!','!','@','@','#','#','$','$','%','%','&',//100
'^','~','+','-','*','<','>','?','/'};//109
string result = "";
Random rnd = new Random();
for (int i = 0; i <length; i++)
{
int str = rnd.Next(beginPosition,endPosition+1);
result += characters[str];
}
return result;
}
}
看msdn上直接把随机数存入数组,也许更方便:
http://msdn.microsoft.com/en-us/library/system.random.aspx
- C#生成用户密码(发帖挨砸记)
- 实用C#制作Discuz发帖
- 发帖
- 发帖
- Joomla 用户密码的生成原理
- oracle用户密码密码的生成
- C#自动登录DiscuzNT论坛并发帖
- 后院自动发帖代码(C#版)
- C#自动登录DiscuzNT论坛并发帖
- C# 自动登录DiscuzNT论坛并发帖
- 用户密码管理、随机密码生成工具
- c#使用Api函数重设用户密码
- C# MD5加密用户密码的类
- C#实现MD5算法,对用户密码加密
- C# rdp 自定义用户密码进行远程连接
- linux批量添加用户shell并随机生成用户密码
- 《编程之美》发帖水王及扩展,与最短摘要生成
- EF6 在原有数据库中使用 CodeFirst 总复习(五、生成发帖页面)
- 不定参数的应用1
- 风吹效果
- 联想笔记本ubuntu系统下的背光调节
- 找树中两个节点的最近公共祖先
- 不定参数应用2
- C#生成用户密码(发帖挨砸记)
- mfc在单文档客户区添加控件
- 怎样把一个控件添加到文档视图中
- 第二章 缓冲区(13)
- 关于采集器开发小结
- 学会借鉴 一个美国人对我的帮助
- CGAL安装第五天
- EXCEL在VB中的编程概念全解
- Linux Shell 编程学习之重要知识简记