作者jimshih (传说中的果汁学长)
看板Web_Design
标题Re: ASP.NET for C# 如何产生英数夹杂的密码?
时间Thu Apr 6 10:58:54 2006
※ 引述《dinos (来游泳吧~~)》之铭言:
: ※ 引述《jimshih (传说中的果汁学长)》之铭言:
: : 事情是这样的
: : 我想在User建立资料时, 自动产生一组乱数密码(英数夹杂)
: : 可是我不知要如何产生英数夹杂的乱数密码? (假设要8个字元)
: : 嗯....只好上来请教一下高手了...
: char* setRandomKey(int n) {
: int i,j;
: char s[n];
: randomize();
: for(i=0;i<n;i++) {
: j=rand()%62;
: if(j<10) {
: s[i]=(char)(j+48);
: }
: else if(j<36) {
: s[i]=(char)(j+55);
: }
: else if(j<62) {
: s[i]=(char)(j+61);
: }
: }
: return s;
: }
: 差不多是这样吧 好久没碰 C 了 XD
大推~! 这个函数蛮好用的
不过你用的是C写的, 所以我改写了一下, 让它可以在 C# 下执行:
private string setRandomKey(int n)
{
int j;
char [] s = new char[n];
string result = "";
Random rdm1 ;
for (int i=0;i<n;i++)
{
rdm1 = new Random(unchecked((int)DateTime.Now.Ticks)
+i);
j = rdm1.Next() % 62;
if(j<10)
{
s[i] = (char)(j+48);
}
else if(j<36)
{
s[i] = (char)(j+55);
}
else if(j<62)
{
s[i] = (char)(j+61);
}
result += s[i].ToString();
}
return result;
}
注意, rdm1後面有多做 +i 这个动作
不然跑出来的字元会完全一样 (现在cpu太快了呀~)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.229.61.172