Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Kiểm tra tính hợp lệ mật khẩu trong C#

Validate mật khẩu mạnh: độ dài, chữ hoa, chữ thường, số, ký tự đặc biệt, không khoảng trắng.

Ví dụ hoàn chỉnh

using System;
using System.Linq;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string[] testPasswords = 
        {
            "weak",
            "StrongPass1!",
            "NoSpecial123",
            "nouppercase1!",
            "NOLOWERCASE1!",
            "NoDigit!",
            "Has Space1!",
            "PerfectPass123!"
        };
        
        foreach (string pwd in testPasswords)
        {
            var result = ValidatePassword(pwd);
            Console.WriteLine($"{pwd,-20} → {(result.IsValid ? "✓ Hợp lệ" : "✗ " + result.Error)}");
        }
    }
    
    static (bool IsValid, string Error) ValidatePassword(string password)
    {
        if (string.IsNullOrWhiteSpace(password))
            return (false, "Mật khẩu không được rỗng");
        
        if (password.Length < 8)
            return (false, "Tối thiểu 8 ký tự");
        
        if (password.Length > 14)
            return (false, "Tối đa 14 ký tự");
        
        if (password.Any(char.IsWhiteSpace))
            return (false, "Không được chứa khoảng trắng");
        
        if (!password.Any(char.IsUpper))
            return (false, "Cần ít nhất 1 chữ HOA");
        
        if (!password.Any(char.IsLower))
            return (false, "Cần ít nhất 1 chữ thường");
        
        if (!password.Any(char.IsDigit))
            return (false, "Cần ít nhất 1 chữ số");
        
        string specialChars = @"%!@#$%^&*()?/><,:;'\|{}[]_~`+=-""";
        if (!password.Any(c => specialChars.Contains(c)))
            return (false, "Cần ít nhất 1 ký tự đặc biệt");
        
        return (true, "OK");
    }
}

Kết quả đầu ra

weak                 → ✗ Tối thiểu 8 ký tự
StrongPass1!         → ✓ Hợp lệ
NoSpecial123         → ✗ Cần ít nhất 1 ký tự đặc biệt
nouppercase1!        → ✗ Cần ít nhất 1 chữ HOA
NOLOWERCASE1!        → ✗ Cần ít nhất 1 chữ thường
NoDigit!             → ✗ Cần ít nhất 1 chữ số
Has Space1!          → ✗ Không được chứa khoảng trắng
PerfectPass123!      → ✓ Hợp lệ

Mở rộng: Dùng Regex cho validate phức tạp: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,14}$.