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.