Maison >développement back-end >C++ >Comment puis-je hacher et sel en toute sécurité en C #?

Comment puis-je hacher et sel en toute sécurité en C #?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-28 06:07:09739parcourir

La méthode de dissipation sûre et de mots de passe de sel en C #

Introduction

La sécurité du mot de passe est cruciale dans toute application logicielle. La luttation et le sel sont deux technologies clés pour protéger les mots de passe qui ne sont pas divulgués.

Code de Davidhayden: extensions de base et sel

Le fragment de code de Davidhayden fournit une implémentation de base des dissipations de mot de passe et du sel. Il utilise des classes d'authentification Forms pour diffuser le mot de passe afin de le stocker dans le fichier de configuration. Cependant, pour les blobs binaires tels que l'extension et le sel, la conversion entre la chaîne est considérée comme inutile.

Méthode C # alternative: extension avancée et sel

Les méthodes d'amélioration suivantes de "Début ASP.NET Security" incluent certaines fonctions d'amélioration:

Cette méthode utilise un algorithme SHA256 plus sûr et effectue des dispersions sur le tableau d'octets au lieu de la chaîne. Il garantit également que le sel de chaque mot de passe est unique.

<code class="language-csharp">static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt)
{
  HashAlgorithm algorithm = new SHA256Managed();

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

  for (int i = 0; i < plainText.Length; i++)
  {
    plainTextWithSaltBytes[i] = plainText[i];
  }
  for (int i = 0; i < salt.Length; i++)
  {
    plainTextWithSaltBytes[plainText.Length + i] = salt[i];
  }

  byte[] hash = algorithm.ComputeHash(plainTextWithSaltBytes);

  return hash;
}</code>
Autres précautions

Le texte peut être converti en tableau d'octets. Les ombles

peuvent être converties en chaîne avec
    et utiliser
  • pour convertir le tableau d'octets. Encoding.UTF8.GetBytes(string)
  • Une comparaison égale entre le réseau d'octets doit être effectuée par cyclisme et vérification de chaque octet.
  • Convert.ToBase64String Le sel ne doit pas être réutilisé et il doit être stocké avec le mot de passe posé. Convert.FromBase64String

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn