求两算法,一算法能生成一串随机数,然后另一算法验证字符是否上一个算法生成的
求高手.

解决方案 »

  1.   

    Guid.NewGuid().ToString()list.contrains()
      

  2.   

    我的意思是,
    算法一:生成一串随机数(暂时定为8位)
    算法二:验证算法一生成的随机数(算法一:生成一串随机数(暂时定为8位))是否是算法一生成的
    是的话返回true,否的话返回false你们上面的说的不会用,也没用过,如果能用的话,请给出示例,谢谢。
      

  3.   

    string getValidcode(int num)
    {
    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();
    }
    这是生成随机数的方法。
      

  4.   

    完全随机是无法验证的,除非将产生过的数保存起来(到数据库)以便验证。
    但是可以部分随机(产生的数含有一定的内在规律),该规律可以用来进行验证。
    比如拿第二个字节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));
    }