using System;
using System.Collections.Generic;
using System.Linq;
//https://www.nuget.org/packages/BCrypt.Net-Next/ paketinden dll kurulacak.
namespace BcryptDemo
{
class Program
{
static List<User> Users { get; set; }
static void Main(string[] args)
{
//Temsili kullanıcı adı ve database
Users = new List<User>();
Users.Add(new User
{
Username = "user1",
Password = BCrypt.Net.BCrypt.HashPassword("test1")
});
Users.Add(new User
{
Username = "user2",
Password = BCrypt.Net.BCrypt.HashPassword("test2")
});
Console.WriteLine("Database kullanıcı adları ve şifreler");
foreach (var _user in Users)
{
Console.WriteLine(_user.ToString());
}
Console.Write("Username:");
var username = Console.ReadLine();
Console.Write("Password:");
var password = Console.ReadLine();
//Temsili database sorgusunu
var user = Users.SingleOrDefault(q => q.Username == username);
var dogrula = false;
if (user != null)
dogrula = BCrypt.Net.BCrypt.Verify(password, user.Password);
Console.WriteLine(dogrula ? "Giriş yapıldı" : "Hatalı kullanıcı adı veya şifre");
if (dogrula)
{ //Dikkat edersek aynı kelime için farklı hash kodları alıyoruz.
//Bu yüzden tahmin edilmesi ve ters çevrilmesi neredeyse imkansız.
var _password = BCrypt.Net.BCrypt.HashPassword(password);
Console.WriteLine($"Doğrularken oluşturulan yeni hash kodu eskisinden farklı bu yüzden tahmin edilmesi ve ters çevrilmesi neredeyse imkansız\n {_password}");
}
}
}
public class User
{
public string Username { get; set; }
public string Password { get; set; }
public override string ToString()
{
return $"Username: {Username}, Password: {Password}";
}
}
}
Kaynak
https://github.com/BcryptNet/bcrypt.net