C# でランダムな英数字の文字列を生成する
-
C# の
Random
クラスを使用してランダムな英数字の文字列を生成する - C# の LINQ メソッドを使用してランダムな英数字の文字列を生成する
-
C# で
RNGCryptoServiceProvider
クラスを使用してランダムな英数字の文字列を生成する
このチュートリアルでは、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
配列を繰り返し処理し、毎回 Charsarr
の characters
文字列からランダムなインデックスで文字を保存しました。次に、文字の配列 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つの方法よりも比較的安全で予測できないため、ランダムなパスワードを生成する場合に推奨されます。
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