首页 新闻 会员 周边

随机函数得到验证码

0
悬赏园豆:10 [已解决问题] 解决于 2012-03-15 11:58

怎样使用随机函数得到类似SD78这样数字和字母组合的验证码?

紫梦依旧的主页 紫梦依旧 | 初学一级 | 园豆:128
提问于:2012-03-15 10:57
< >
分享
最佳答案
0

       string[] test = { "A", "B", "C", "E", "F", "1", "2", "3", "4" };
            int length = 4;
            string str = string.Empty;
            long tick = DateTime.Now.Ticks;
            Random ran = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));
            for (int i = 0; i < length; i++)
            {
                str += test[ran.Next(test.Length)];
            }
            Console.WriteLine(str);

收获园豆:10
無限遐想 | 老鸟四级 |园豆:3740 | 2012-03-15 11:08
其他回答(2)
1
public string CreateCode(int codeLength)
{

string so = "2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z";
string[] strArr=so.Split(',');
string code = "";
Random rand=new Random();
for (int i = 0; i < codeLength; i++)
{
code+=strArr[rand.Next(0, strArr.Length)];
}
return code;
}

用这个就可以

artwl | 园豆:16736 (专家六级) | 2012-03-15 11:03

       string[] test = { "A", "B", "C", "E", "F", "1", "2", "3", "4" };
            int length = 4;
            string str = string.Empty;
            long tick = DateTime.Now.Ticks;
            Random ran = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));
            for (int i = 0; i < length; i++)
            {
                str += test[ran.Next(test.Length)];
            }
            Console.WriteLine(str);

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-15 11:08

感觉验证码还是不区分大小写比较好。。。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-03-15 11:09

@水牛刀刀: 

嗯,是的,最好把相似的去掉,如i,1,o,O之类的

上面的随手帖过来的,我修改下

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2012-03-15 11:14

@水牛刀刀: 现在流行做法是显示时区分大小写,输入时不区分。

支持(0) 反对(0) today4king | 园豆:3499 (老鸟四级) | 2012-03-15 11:22

@artwl: 很好,找的就是这样的,谢谢啦大侠!

支持(0) 反对(0) 紫梦依旧 | 园豆:128 (初学一级) | 2012-03-15 11:34
0

在图片生成上大小写必须随机,没了大小写破解难度大大降低,去掉相似歧义的字符倒是应该的,比如0跟O。

在用户输入时不应该区分大小写。

today4king | 园豆:3499 (老鸟四级) | 2012-03-15 11:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册