代码之家  ›  专栏  ›  技术社区  ›  Nightforce2

如何创建一个随机字符字符串(比如密码…)?[关闭]

  •  0
  • Nightforce2  · 技术社区  · 14 年前

    我已经编写了一些代码来生成一个随机字符序列,但它没有:

            byte[] sbytes = { 1, 0, 1, 0, 1 };
            String sstring;
            System.Random r = new System.Random();
    
            r.NextBytes(sbytes);
            sstring = Convert.ToBase64String(sbytes);
    
            sstring = Path.GetRandomFileName();
    
            sstring = sstring.Replace("=", "");
            sstring = sstring.Replace(".", "");
    
            textBox1.Text = sstring.ToString();
    

    我认为问题出在nextbytes和tobase64string之间。我不知道该怎么做。如何进行正确的转换以将其传递到文本框进行显示?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Darin Dimitrov    14 年前

    如果你想生成一个随机密码,这里有一个 great example . 这里是 another one 更天真的是。只需忘记 Path.GetRandomFileName 功能。

        2
  •  0
  •   Rune FS    14 年前

    如果你写了

    sstring += Path.GetRandomFileName();
    

    我猜结果会更像你要找的,但是它只是伪随机的,你应该看看Darin发布的链接

        3
  •  0
  •   Jon Skeet    14 年前

    您正在用文件名替换随机数据:

    sstring = Convert.ToBase64String(sbytes);
    sstring = Path.GetRandomFileName();
    

    第二条语句忽略第一条语句设置的现有值,因此调用 NextRandom() ToBase64String 完全无关。

    你到底想做什么?

    编辑:这不是创建随机密码的好方法。首先,你应该使用 SecureRandom 而不是 Random 你可以 希望避免混淆诸如“0”和“o”、“l”和“1”看起来相同的特性。你 能够 只使用 Path.GetRandomFileName 就其本身而言,但它并不是真正为之设计的。