using System; using System.Text; namespace PasswordTest { class Program { static void Main(string[] args) { string exit = string.Empty; var pi = new PasswordInfo(); pi.Name = "Name"; pi.Surname = "Surname"; while (exit != "exit") { Console.WriteLine("Enter A Password:"); pi.Password = Console.ReadLine(); Console.WriteLine(Program.CheckPasswordFormat(pi).Data.ToString()); }; } public struct ResultInfo { public bool Success { get; } public object Data { get; } public ResultInfo(bool success, object data) { Success = success; Data = data; } } public class PasswordInfo { string name; public string Name { get { return name; } set { name = value?.Trim(); } } string surname; public string Surname { get { return surname; } set { surname = value?.Trim(); } } string password; public string Password { get { return password; } set { password = value?.Trim(); } } } public static ResultInfo CheckPasswordFormat(PasswordInfo pi) { var error = new ResultInfo(false, "En az 6 en, fazla 128 karakter olmalıdır.Türkçe karakter içermeden en az bir büyük, en az bir küçük harf,en az bir rakam ve en az bir özel karakter içermelidir. Örneğin (~!@#$%^&*_-+=`|\\(){}[]:;\"'<>,.?/). Ad ve soyad içermemelidir." ); if (pi.Password == null) return error; if (pi.Password.Length < 6 || pi.Password.Length > 128) return error; if (pi.Password.IndexOf(' ') > -1) return error; if (!string.IsNullOrEmpty(pi.Name)) if (pi.Name.Length > 2) if (pi.Password.ToLower().IndexOf(pi.Name.ToLower()) > -1) return error; if (!string.IsNullOrEmpty(pi.Surname)) if (pi.Surname.Length > 2) if (pi.Password.ToLower().IndexOf(pi.Surname.ToLower()) > -1) return error; var nonAlphaNumericCharacters = "~!@#$%^&*_-+=`|\\(){}[]:;\"'<>,.?/"; foreach (var c in nonAlphaNumericCharacters) { if (pi.Password.IndexOf(c) > -1) goto passedNonAlphaNumeric; } return error; passedNonAlphaNumeric: for (char c = 'a'; c <= 'z'; c++) { if (pi.Password.IndexOf(c) > -1) goto passedLowCharacters; } return error; passedLowCharacters: for (char c = 'A'; c <= 'Z'; c++) { if (pi.Password.IndexOf(c) > -1) goto passedCapitalCharacters; } return error; passedCapitalCharacters: for (char c = '0'; c <= '9'; c++) { if (pi.Password.IndexOf(c) > -1) goto passedDigits; } return error; passedDigits: //Varsayılan karakterler dışında bir karakter yazıldıysa örneğin:ı,ç,ş,ö,ğ,€ var sb = new StringBuilder(nonAlphaNumericCharacters); for (char c = '0'; c <= '9'; c++) sb.Append(c); for (char c = 'a'; c <= 'z'; c++) sb.Append(c); for (char c = 'A'; c <= 'Z'; c++) sb.Append(c); var allChars = sb.ToString(); foreach (var c in pi.Password) { if (allChars.IndexOf(c) == -1) return error; } return new ResultInfo(true, "OK"); } } }
23 Şubat 2018
C# Parola Kontrolü
Parola kontrol için hazır kod.