Arka Plan
Hiçbir zaman ... gerçekten ... kullanıcının şifresini bilmeniz gerekmez. Sadece gelen kullanıcının bir hesabın şifresini bildiğini doğrulamak istiyorsunuz.
Hash It:
Kullanıcı parolalarının karma değerini (tek yönlü şifreleme) güçlü bir karma işlevi aracılığıyla depolar. "C # şifreleri şifreleme" araması bir sürü örnek verir.
Karma işlevinin ne ürettiği hakkında bir fikir edinmek için çevrimiçi SHA1 karma yaratıcısına bakın (Ancak SHA1'i karma işlevi olarak kullanmayın, SHA256 gibi daha güçlü bir şey kullanın).
Şimdi, karma parolalar sizin (ve veritabanı hırsızlarının) bu karma değerini orijinal parolaya geri çevirememeniz gerektiği anlamına gelir.
Nasıl kullanılır:
Ama diyorsunuz ki, veritabanında saklanan bu parola parolasını nasıl kullanırım?
Kullanıcı oturum açtığında, size kullanıcı adını ve şifreyi (orijinal metninde) verir. Saklanan sürümü almak için bu şifreyi yazmak için aynı karma kodu kullanırsınız.
Bu nedenle, iki karma şifreyi (kullanıcı adı için veritabanı karma ile girilen & karma şifreyi) karşılaştırın. Karmalarını karşılaştırarak "yazdıklarının" orijinal kullanıcının parolaları için ne girdiğini "uyuşup uyuşmadığını" anlayabilirsiniz.
Ekstra kredi:
Soru: Veritabanınız olsaydı, o zaman Ripper John gibi bir kraker alıp depolanmış, karma şifrelerinizle eşleşene kadar karma yapmaya başlayamadım mı? (kullanıcılar kısa, sözlük kelimeleri yine de seçtiği için ... kolay olmalı)
Cevap: Evet ... evet yapabilirler.
Yani, şifrelerinizi 'tuzlamalısınız'. Tuz hakkındaki Wikipedia makalesine bakın
Bkz. "Tuz ile veri karma nasıl yapılır" C # örneği