Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh dengan selamat hash dan kata laluan garam di C# menggunakan gumpalan binari?

Bagaimanakah saya boleh dengan selamat hash dan kata laluan garam di C# menggunakan gumpalan binari?

Linda Hamilton
Lepaskan: 2025-01-28 06:16:08
asal
1046 orang telah melayarinya

How Can I Securely Hash and Salt Passwords in C# Using Binary Blobs?

c#menggunakan hash gumpalan binari dan kata laluan garam

Dalam konteks perlindungan kata laluan, hash kata laluan dan main garam memainkan peranan penting dalam mengurangkan kelemahan keselamatan yang berpotensi. Artikel David Hayden menggariskan kaedah hash kata laluan pengguna, tetapi ia memperkenalkan gumpalan binari kepada rentetan untuk menyimpannya dalam fail teks dan memperkenalkan kaedah yang tidak konvensional. Walau bagaimanapun, adalah disyorkan untuk merawat hash dan garam sebagai data binari untuk mendapatkan keselamatan terbaik.

Kaedah alternatif adalah menggunakan gumpalan binari secara langsung tanpa memerlukan penukaran rentetan. Kaedah ini memastikan integriti hash dan garam dengan mengelakkan kesilapan pengekodan yang berpotensi. Contoh kod berikut menunjukkan cara menjana hash garam binari:

Generasi garam adalah sama dengan kod Hayden. Untuk menyimpan dengan selamat dan tambah hash garam, ia harus dikodkan ke dalam rentetan Base64.
static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt)
{
  HashAlgorithm algorithm = new SHA256Managed();

  byte[] plainTextWithSaltBytes = 
    new byte[plainText.Length + salt.Length];

  Array.Copy(plainText, plainTextWithSaltBytes, plainText.Length);
  Array.Copy(salt, 0, plainTextWithSaltBytes, plainText.Length, salt.Length);

  return algorithm.ComputeHash(plainTextWithSaltBytes);
}
Salin selepas log masuk

untuk perbandingan, kod berikut menunjukkan cara untuk memeriksa sifat yang sama dengan array byte:

Untuk meningkatkan keselamatan, garam baru mesti dihasilkan untuk setiap kata laluan. Pengiraan garam melalui hash rawak untuk membantu mencegah jam tangan pelangi daripada menyerang. Ingatlah untuk menyimpannya dengan selamat dengan garam, bukannya bocor kata laluan bawah.
public static bool CompareByteArrays(byte[] array1, byte[] array2)
{
  if (array1 == null || array2 == null || array1.Length != array2.Length)
  {
    return false;
  }

  for (int i = 0; i < array1.Length; i++)
  {
    if (array1[i] != array2[i])
    {
      return false;
    }
  }

  return true;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh dengan selamat hash dan kata laluan garam di C# menggunakan gumpalan binari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan