• 17-04-2023, 19:51:14
    #1
    Merhaba forum sakinleri benim arkadaşımla geliştirdiğim bir projem var ve bu projede bir sorun ile karşılaştım.
    Sorun şu: c# bir proje ve bu proje websitesinden şifre verisini BCrypt olarak çekiyor ama ben bunu SHA-512 olarak çekmesini istiyorum
    Örnek şifre şu: $SHA$B5UjjrhJBcz5ii9P$6cce66749fd297b422fe1c13a550 d654426992626e8dd326d989d8d4d74efa76 (123456789a)

                            string hashedPassword = reader.GetString("password");
    
                            // Check if the entered password matches the hashed password
                            if (BCrypt.Net.BCrypt.Verify(password, hashedPassword))
                            {
    
                                // Write the user's information to the User class
                                User.Id = id;
                                User.Username = _username;
                                User.Rank = rank;
                                User.Credit = Credit;
                                Save_Data();
                                MainMenu mm = new MainMenu();
                                mm.Show();
                                Hide();
                            }
  • 17-04-2023, 20:13:15
    #2
    biraz daha detay lazım hocam , hashedpasswordmu sha512 olarak almak isityorsunuz ?
  • 17-04-2023, 20:14:52
    #3
    Bu kodda, veritabanından alınan şifre verisi BCrypt ile şifrelenmiş olarak saklanıyor ve kullanıcının girdiği şifre de BCrypt ile şifrelenerek kontrol ediliyor. Eğer siz SHA-512 kullanmak istiyorsanız, öncelikle veritabanındaki şifreleri SHA-512 ile şifrelemeniz gerekecek. Bunun için öncelikle veritabanındaki BCrypt ile şifrelenmiş şifreleri SHA-512 ile yeniden şifrelemeli ve veritabanındaki verileri güncellemelisiniz.
    Ardından, kullanıcının girdiği şifreyi de SHA-512 ile şifrelemeniz gerekecek. Bunun için .NET Framework'ün System.Security.Cryptography namespace'indeki SHA512Managed sınıfını kullanabilirsiniz. Şifrelenmiş şifreyi GetString() yöntemiyle okuduktan sonra, şifrelenmiş girdi şifresini SHA512Managed sınıfı kullanarak şifreleyip, iki şifre arasındaki eşleşmeyi kontrol edebilirsiniz.

    string hashedPassword = reader.GetString("password");
    SHA512Managed sha512 = new SHA512Managed();
    byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
    byte[] hashedPasswordBytes = sha512.ComputeHash(passwordBytes);
    string hashedPasswordString = Convert.ToBase64String(hashedPasswordBytes);
    
    // Check if the entered password matches the hashed password
    if (hashedPasswordString == hashedPassword)
    {
    // Write the user's information to the User class
    User.Id = id;
    User.Username = _username;
    User.Rank = rank;
    User.Credit = Credit;
    Save_Data();
    MainMenu mm = new MainMenu();
    mm.Show();
    Hide();
    }
    Bu kodda, SHA512Managed sınıfı kullanılarak kullanıcının girdiği şifre SHA-512 ile şifreleniyor. Daha sonra, veritabanından okunan şifre değeri ile eşleştiriliyor ve doğrulama yapılıyor. Eğer iki şifre eşleşirse, kullanıcının bilgileri User sınıfına kaydedilip, ana menü gösteriliyor.
  • 17-04-2023, 20:15:18
    #4
    Extsoft adlı üyeden alıntı: mesajı görüntüle
    biraz daha detay lazım hocam , hashedpasswordmu sha512 olarak almak isityorsunuz ?
    siteden veriyi çekerken deneme2'dekinin şifresini doğru olarak kabul ediyor fakat ben SHA olan şifreyi database ile eşleştirip girmesini istiyorum onu yapamadım henüz
  • 17-04-2023, 20:21:03
    #5
    fyazilim adlı üyeden alıntı: mesajı görüntüle
    Bu kodda, veritabanından alınan şifre verisi BCrypt ile şifrelenmiş olarak saklanıyor ve kullanıcının girdiği şifre de BCrypt ile şifrelenerek kontrol ediliyor. Eğer siz SHA-512 kullanmak istiyorsanız, öncelikle veritabanındaki şifreleri SHA-512 ile şifrelemeniz gerekecek. Bunun için öncelikle veritabanındaki BCrypt ile şifrelenmiş şifreleri SHA-512 ile yeniden şifrelemeli ve veritabanındaki verileri güncellemelisiniz.
    Ardından, kullanıcının girdiği şifreyi de SHA-512 ile şifrelemeniz gerekecek. Bunun için .NET Framework'ün System.Security.Cryptography namespace'indeki SHA512Managed sınıfını kullanabilirsiniz. Şifrelenmiş şifreyi GetString() yöntemiyle okuduktan sonra, şifrelenmiş girdi şifresini SHA512Managed sınıfı kullanarak şifreleyip, iki şifre arasındaki eşleşmeyi kontrol edebilirsiniz.

    string hashedPassword = reader.GetString("password");
    SHA512Managed sha512 = new SHA512Managed();
    byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
    byte[] hashedPasswordBytes = sha512.ComputeHash(passwordBytes);
    string hashedPasswordString = Convert.ToBase64String(hashedPasswordBytes);
    
    // Check if the entered password matches the hashed password
    if (hashedPasswordString == hashedPassword)
    {
    // Write the user's information to the User class
    User.Id = id;
    User.Username = _username;
    User.Rank = rank;
    User.Credit = Credit;
    Save_Data();
    MainMenu mm = new MainMenu();
    mm.Show();
    Hide();
    }
    Bu kodda, SHA512Managed sınıfı kullanılarak kullanıcının girdiği şifre SHA-512 ile şifreleniyor. Daha sonra, veritabanından okunan şifre değeri ile eşleştiriliyor ve doğrulama yapılıyor. Eğer iki şifre eşleşirse, kullanıcının bilgileri User sınıfına kaydedilip, ana menü gösteriliyor.
    Denedim fakat şifre yanlış hatası alıyorum