求两算法,一算法能生成一串随机数,然后另一算法验证字符是否上一个算法生成的
求高手.
求高手.
解决方案 »
- VB.NET里面这个函数对应C#里面哪个函数
- C#位移转为VB的代码
- [高分]如何监听qq的聊天消息,要有完整代码!!!!!!!!!!
- 求助日期格式转换问题,谢谢
- 如何将字符串转换成System.Drawing.Color类型?
- 传真 FAXCOMLib 组件的使用问题
- [求助]这个问题怎样解决?
- C#多窗口应用中打开一个visio,然后能够从MSMQ的队列中读取一个消息 (急!!!!!求源代码 12小时内结贴)
- web开发是不是没WINFORM有前途?
- 多线程问题
- WINFORM中加载XML 有缓存吗,有的话如何清除?
- 跪求高手帮忙。。。。。。webBrowser --HTML--表格--文本框
算法一:生成一串随机数(暂时定为8位)
算法二:验证算法一生成的随机数(算法一:生成一串随机数(暂时定为8位))是否是算法一生成的
是的话返回true,否的话返回false你们上面的说的不会用,也没用过,如果能用的话,请给出示例,谢谢。
{
string rdm="abcdefghijklmnopqrstuvwxyz1234567890"
char[] chastr=rdm.tochararray(); //字符串转换为字符数组
stringbuilder sbvalidcode=new stringbuilder();
Random rd=new Random();
for (int i=0;i<num;i++)
{
sbValidCode.Append(rdm.substring(rd.next(0,rdm.length),1));
}
return sbValidCode.Tostring();
}
这是生成随机数的方法。
但是可以部分随机(产生的数含有一定的内在规律),该规律可以用来进行验证。
比如拿第二个字节b1来作为校验值,它必须是其他字节的函数如b1 = b0 + b2*2 + b3*3。
一个字节有256种状态,因此一个不知道规律的随机串,99.6%的情况下将被拒绝。static string GetString(Random random)
{
byte[] bytes = new byte[4];
random.NextBytes(bytes);
bytes[1] = unchecked((byte)(bytes[0] + bytes[2] * 2 + bytes[3] * 3));
return BitConverter.ToString(bytes).Replace("-", "");
}
static bool VerifyString(string s)
{
if (s == null || s.Length != 8) return false;
byte[] bytes = new byte[4];
for (int i = 0; i < bytes.Length; i++)
{
try { bytes[i] = Convert.ToByte(s.Substring(i + i, 2), 16); }
catch(FormatException) { return false; }
}
return bytes[1] == unchecked((byte)(bytes[0] + bytes[2] * 2 + bytes[3] * 3));
}