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

Muhammad Maisam Abbas 2023年1月30日 2021年4月29日
  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