Menyimpan kata laluan menggunakan penyulitan mudah adalah tidak mencukupi. Hashing, fungsi kriptografi sehala, menyediakan penyelesaian yang lebih kukuh dengan menukar kata laluan kepada nilai panjang tetap yang unik, tidak boleh diterbalikkan.
Pada tahun 2012, PBKDF2 (Fungsi Terbitan Kunci Berasaskan Kata Laluan 2) ialah algoritma yang disyorkan untuk aplikasi .NET. Kelas Rfc2898DeriveBytes
memudahkan proses pencincangan yang selamat melalui langkah utama ini:
Langkah 1: Penjanaan Garam
<code class="language-csharp">byte[] salt = new byte[16]; new RNGCryptoServiceProvider().GetBytes(salt);</code>
Langkah 2: Penciptaan Hash
<code class="language-csharp">var pbkdf2 = new Rfc2898DeriveBytes(password, salt, 100000); byte[] hash = pbkdf2.GetBytes(20);</code>
Langkah 3: Menggabungkan Garam dan Hash
<code class="language-csharp">byte[] hashBytes = new byte[36]; Array.Copy(salt, 0, hashBytes, 0, 16); Array.Copy(hash, 0, hashBytes, 16, 20);</code>
Langkah 4: Pengekodan Base64 untuk Storan
<code class="language-csharp">string savedPasswordHash = Convert.ToBase64String(hashBytes);</code>
Langkah 5: Pengesahan Kata Laluan
<code class="language-csharp">byte[] hashBytes = Convert.FromBase64String(savedPasswordHash); byte[] salt = new byte[16]; Array.Copy(hashBytes, 0, salt, 0, 16); var pbkdf2 = new Rfc2898DeriveBytes(password, salt, 100000); byte[] hash = pbkdf2.GetBytes(20); // Compare hash values here...</code>
Kiraan lelaran (100000 dalam contoh ini) dalam PBKDF2 mengawal kos pengiraan retak. Walaupun 10000 adalah minimum yang dicadangkan, laraskan nilai ini berdasarkan keperluan prestasi aplikasi anda. Kiraan lelaran yang lebih tinggi meningkatkan keselamatan tetapi boleh menjejaskan kelajuan aplikasi.
Atas ialah kandungan terperinci Bagaimanakah PBKDF2 Menyimpan Kata Laluan Selamat dalam .NET (2012)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!