Latar Belakang
Anda tidak pernah ... benar-benar ... perlu mengetahui kata sandi pengguna. Anda hanya ingin memverifikasi pengguna yang masuk mengetahui kata sandi untuk suatu akun.
Hash It:
Menyimpan kata sandi pengguna hash (enkripsi satu arah) melalui fungsi hash yang kuat. Pencarian untuk "c # mengenkripsi kata sandi" memberikan banyak contoh.
Lihat pembuat hash SHA1 online untuk gagasan tentang apa yang dihasilkan fungsi hash (Tapi jangan gunakan SHA1 sebagai fungsi hash, gunakan sesuatu yang lebih kuat seperti SHA256).
Sekarang, kata sandi hash berarti Anda (dan pencuri basis data) tidak dapat membalikkan hash itu kembali ke kata sandi semula.
Bagaimana cara menggunakannya:
Tapi, Anda berkata, bagaimana saya menggunakan kata sandi yang dihaluskan yang disimpan dalam database?
Ketika pengguna masuk, mereka akan memberi Anda nama pengguna dan kata sandi (dalam teks aslinya). Anda hanya menggunakan kode hash yang sama untuk hash kata sandi yang diketik untuk mendapatkan versi yang disimpan.
Jadi, bandingkan dua kata sandi hash (hash basis data untuk nama pengguna dan kata sandi yang diketik & hash). Anda dapat mengetahui apakah "apa yang mereka ketikkan" cocok dengan "apa yang dimasukkan oleh pengguna asli untuk kata sandi mereka" dengan membandingkan hash mereka.
Kredit tambahan:
Pertanyaan: Jika saya memiliki basis data Anda, maka bisakah saya mengambil cracker seperti John the Ripper dan mulai membuat hash sampai saya menemukan kecocokan dengan kata sandi hash yang tersimpan? (karena pengguna memilih kata-kata kamus yang pendek ... seharusnya mudah)
Jawab: Ya ... ya mereka bisa.
Jadi, Anda harus 'garam' kata sandi Anda. Lihat artikel Wikipedia tentang garam
Lihat "Cara hash data dengan garam" contoh C #