Maison  >  Article  >  développement back-end  >  Introduction détaillée à l'exemple de code de génération par lots C# de mots de passe aléatoires qui doivent contenir des chiffres et des lettres et être chiffrés avec un algorithme de chiffrement.

Introduction détaillée à l'exemple de code de génération par lots C# de mots de passe aléatoires qui doivent contenir des chiffres et des lettres et être chiffrés avec un algorithme de chiffrement.

黄舟
黄舟original
2017-03-29 11:25:101745parcourir

Cet article présente principalement C# Les mots de passe aléatoires générés par lots doivent contenir des chiffres et des lettres et être cryptés avec un algorithme de cryptage. Les amis dans le besoin peuvent se référer aux

Exigences. :

Le mot de passe doit contenir des chiffres et des lettres

Idées :

1. personnages. Forme chaîne : chars

2. Utilisez randrom.Next(int i) pour renvoyer un nombre aléatoire non négatif inférieur à la valeur maximale spécifiée.

3. Choisissez au hasard un nombre aléatoire a qui n'est pas inférieur à la longueur des caractères, et choisissez le a-ième caractère de la chaîne de caractères.

4. Boucle 8 fois pour obtenir le mot de passe à 8 chiffres

5. Boucle N fois pour obtenir le mot de passe par lots.

Le code est implémenté comme suitMainFonction :

static void Main(string[] args)
    {
      string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
      Random randrom = new Random((int)DateTime.Now.Ticks);
      string path1 = @"C:\Users\lenovo\Desktop\pws.txt";
      for (int j = 0; j < 10000;j++ )
      {
        string str = "";
        for (int i = 0; i < 8; i++)
        {
          str += chars[randrom.Next(chars.Length)];//randrom.Next(int i)返回一个小于所指定最大值的非负随机数
        }
        if (IsNumber(str))//判断是否全是数字
          continue;
        if (IsLetter(str))//判断是否全是字母
          continue;
        File.AppendAllText(path1, str);
        string pws = Md5(str,32);//MD5加密
        File.AppendAllText(path1, "," + pws + "\r\n");
      }
      Console.WriteLine("ok");
      Console.Read();
    }

Utilisez habilement la fonction String.trim pour déterminer si tous ce sont des chiffres. Ce sont des lettres.

Description : string.trim Supprime les caractères d'espacement de début et de fin de l'objet String .

Renvoie : une copie de la chaîne avec tous les caractères d'espacement supprimés du début et de la fin de la chaîne.

a une surcharge : string.Trim(params char[] trimChars)  

//Supprime un jeu de caractères spécifié dans le tableau de l'objet System.string actuel. Tous correspondances de début et de fin

trimChars : Pour supprimer le tableau de caractères de , la méthode

implémente le code suivant :

 //判断是否全是数字
    static bool IsNumber(string str)
    {
      if (str.Trim("0123456789".ToCharArray()) == "")
        return true;
      return false;
    }
    //判断是否全是字母
    static bool IsLetter(string str)
    {
      if (str.Trim("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray()) == "")
        return true;
      return false;
    }

Utilisez le cryptage MD5, le code de l'algorithme est implémenté comme suit :

/// <summary>
    /// MD5加密
    /// </summary>
    /// <param name="str">加密字元</param>
    /// <param name="code">加密位数16/32</param>
    /// <returns></returns>
    public static string Md5(string str, int code)
    {
      string strEncrypt = string.Empty;
      MD5 md5 = new MD5CryptoServiceProvider();
      byte[] fromData = Encoding.GetEncoding("GB2312").GetBytes(str);
      byte[] targetData = md5.ComputeHash(fromData);
      for (int i = 0; i < targetData.Length; i++)
      {
        strEncrypt += targetData[i].ToString("X2");
      }
      if (code == 16)
      {
        strEncrypt = strEncrypt.Substring(8, 16);
      }
      return strEncrypt;
    }

Générez des mots de passe par lots, et les mots de passe cryptés sont comme indiqué ci-dessous :

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