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 を初期化しました。8 文字の長さの文字 Charsarr の配列を作成しました。次に、Random クラス random のインスタンスを初期化しました。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

上記のコードでは、LINQ と C# の 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 文字の安全なランダム英数字文字列を生成しました。この方法は、前の 2つの方法よりも比較的安全で予測できないため、ランダムなパスワードを生成する場合に推奨されます。

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