【问题标题】:How can I create a string of random characters (as for a password...)? [closed]如何创建一串随机字符(如密码...)? [关闭]
【发布时间】:2011-04-01 08:23:32
【问题描述】:

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

        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 之间。我不知道如何使这项工作。您如何进行正确的转换以将其传递到文本框进行显示?

【问题讨论】:

  • 你想做什么? 不要使用Path.GetRandomFileName生成随机字符串!!!

标签: c# string random base64


【解决方案1】:

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

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

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

你到底想做什么?

编辑:这并不是创建随机密码的好方法。一方面,您应该使用SecureRandom 而不是Random,并且您可能希望避免混淆特征,例如“0”和“O”,以及“l”和“1”看起来相同。您可以单独使用Path.GetRandomFileName,但这并不是它的真正用途。

【讨论】:

  • 只需使用 ToBase64String 和 GetRandomFilename 创建一个随机密码。
  • 你把 O 和 0 混淆了是什么意思 示例字符串中首先没有使用字母...
  • @Nightforce2:你在说什么“示例字符串”?如果你从随机数据中使用 base64,你可以绝对得到一个像 OOO0O0OO 这样的字符串,在许多字体中很难区分。
  • 以为你在谈论字节串。我现在明白了!
【解决方案2】:

如果你写了

sstring += Path.GetRandomFileName();

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

【讨论】:

    【解决方案3】:

    如果你想生成一个随机密码,这里是great example。这是another one,它更天真。只需忘记 Path.GetRandomFileName 函数即可。

    【讨论】:

    • 非常感谢大家。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多