在 C# 中生成隨機字母數字字串

Muhammad Maisam Abbas 2024年2月16日
  1. 在 C# 中使用 Random 類生成隨機的字母數字字串
  2. 在 C# 中使用 LINQ 方法生成隨機的字母數字字串
  3. 在 C# 中使用 RNGCryptoServiceProvider 類生成隨機的字母數字字串
在 C# 中生成隨機字母數字字串

本教程將討論在 C# 中生成隨機字母數字字串的方法。

在 C# 中使用 Random 類生成隨機的字母數字字串

Random在 C# 中生成隨機數。Random.Next() 方法生成一個隨機整數值。我們可以宣告一個包含所有字母數字字元的常量字串變數,並根據 Random.Next() 方法生成的索引從字串變數中選擇字元。

以下程式碼示例向我們展示瞭如何使用 C# 中的 Random 類生成隨機的字母數字字串。

using System;
using System.Linq;

namespace random_alphanumeric_strings {
  class Program {
    static void Main(string[] args) {
      var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
      var Charsarr = new char[8];
      var random = new Random();

      for (int i = 0; i < Charsarr.Length; i++) {
        Charsarr[i] = characters[random.Next(characters.Length)];
      }

      var resultString = new String(Charsarr);
      Console.WriteLine(resultString);
    }
  }
}

輸出:

vL8M6BNr

我們在 C# 中使用 Random 類生成了一個長度為 8 個字元的隨機字母數字字串。然後,我們初始化了包含所有所需字母數字字元的字串 characters。我們建立了字元陣列 Charsarr,長度為 8 個字元。然後,我們初始化了 Randomrandom 的例項。我們遍歷 Charsarr 陣列,並每次將字元從 Charsarrcharacters 字串中隨機儲存到索引中。然後,我們將字元陣列 Charsarr 轉換為字串變數 resultString,並顯示結果。

在 C# 中使用 LINQ 方法生成隨機的字母數字字串

LINQ 對 C# 中的資料結構執行查詢功能。我們可以將 LINQ 與 Random 類一起使用,以改善先前方法的效能。下面的程式碼示例向我們展示瞭如何使用 C# 中的 LINQ 方法生成隨機的字母數字字串。

using System;
using System.Linq;

namespace random_alphanumeric_strings {
  class Program {
    private static Random random = new Random();
    public static string method2(int length) {
      const string characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
      return new string(
          Enumerable.Repeat(characters, length).Select(s => s[random.Next(s.Length)]).ToArray());
    }
    static void Main(string[] args) {
      string finalString = method2(8);
      Console.WriteLine(finalString);
    }
  }
}

輸出:

SXUXK2P8

在上面的程式碼中,我們使用 C# 中的 LINQ 和 Random 類建立了一個隨機的字母數字字串。該方法比上面討論的方法更有效。

在 C# 中使用 RNGCryptoServiceProvider 類生成隨機的字母數字字串

不建議使用上面討論的方法來生成密碼,因為它們並不是真正隨機的並且遵循線性模式。對於安全密碼,應使用 RNGCryptoServiceProvider 類。RNGCryptoServiceProvider在 C# 中生成加密隨機數。RNGCryptoServiceProvider 類的 GetBytes() 方法用隨機值填充位元組陣列。我們可以將 GetBytes() 方法與 [Convert.ToBase64String() 方法一起使用,以從填充的位元組陣列中獲取字串。以下程式碼示例向我們展示瞭如何使用 C# 中的 RNGCryptoServiceProvider 類生成安全的隨機字母數字字串。

using System;
using System.Linq;
using System.Security.Cryptography;

namespace random_alphanumeric_strings {
  class Program {
    static string method3(int length) {
      using (var crypto = new RNGCryptoServiceProvider()) {
        var bits = (length * 6);
        var byte_size = ((bits + 7) / 8);
        var bytesarray = new byte[byte_size];
        crypto.GetBytes(bytesarray);
        return Convert.ToBase64String(bytesarray);
      }
    }
    static void Main(string[] args) {
      string finalString = method3(8);
      Console.WriteLine(finalString);
    }
  }
}

輸出:

JGc42Ug3

在上面的程式碼中,我們使用 C# 中的 RNGCryptoServiceProvider 類生成了一個由 8 個字元組成的安全隨機字母數字字串。如果我們要生成隨機密碼,則建議使用此方法,因為它比前兩種方法相對安全且不可預測。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相關文章 - Csharp String