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