Sử dụng Random kết hợp StringBuilder để sinh chuỗi ký tự ngẫu nhiên. Cách phổ biến: sinh số ngẫu nhiên trong khoảng mã ASCII của chữ cái (A-Z hoặc a-z).
Thuật toán sinh chữ cái in hoa A-Z
Random random = new Random();
char c = (char)('A' + random.Next(0, 26)); // 0-25 → A-Z
Mã nguồn hoàn chỉnh (sinh chuỗi 4 ký tự in hoa)
using System.Text;
using System;
class Program
{
static void Main()
{
StringBuilder str = new StringBuilder();
Random random = new Random((int)DateTime.Now.Ticks);
for (int i = 0; i < 4; i++)
{
// Sinh số 0-25, cộng 'A' (65) → 'A' đến 'Z'
char c = (char)('A' + random.Next(0, 26));
str.Append(c);
}
Console.WriteLine(str.ToString());
}
}
Kết quả (ví dụ)
ATTS
Các biến thể phổ biến
| Yêu cầu | Code |
|---|---|
| Chữ thường a-z | (char)('a' + random.Next(0, 26)) |
| Chữ + số (alphanumeric) | const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; chars[random.Next(chars.Length)] |
| Chuỗi an toàn URL (base64url) | Convert.ToBase64String(bytes).Replace('+','-').Replace('/','_').TrimEnd('=') |
| GUID ngẫu nhiên | Guid.NewGuid().ToString("N") |
Cách hiện đại (.NET 6+): RandomNumberGenerator
using System.Security.Cryptography;
// An toàn mật mã (cryptographically secure)
byte[] bytes = new byte[32];
RandomNumberGenerator.Fill(bytes);
string token = Convert.ToBase64String(bytes);
Lưu ý
Randomkhông an toàn mật mã - không dùng cho password, token, key.new Random()dùng seed từ Environment.TickCount - hai instance tạo gần nhau có thể cho cùng chuỗi.- Dùng
Random.Shared(.NET 6+) cho thread-safe shared instance. - StringBuilder hiệu quả hơn nối chuỗi
+trong vòng lặp.