程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 批量生成隨機密碼,必須包含數字和字母,並用加密算法加密,

C# 批量生成隨機密碼,必須包含數字和字母,並用加密算法加密,

編輯:C#入門知識

C# 批量生成隨機密碼,必須包含數字和字母,並用加密算法加密,


要求:密碼必須包含數字和字母

思路:1.列出數字和字符。 組成字符串 :chars

        2.利用randrom.Next(int i)返回一個小於所指定最大值的非負隨機數。

        3. 隨機取不小於chars長度的隨機數a,取字符串chars的第a位字符。

        4.循環 8次,得到8位密碼

        5.循環N次,批量得到密碼。

代碼實現如下 Main函數:

    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();
        }

 

巧用String.trim 函數,判斷是否全是數字,全是字母。

說明:string.trim   從 String 對象移除前導空白字符和尾隨空白字符。

返回:一個字符串副本,其中從該字符串的開頭和末尾移除了所有空白字符。

有一個重載:string.Trim(params char[] trimChars)   

//從當前System.string對象移除數組中指定的一組字符的所有前導匹配項和尾部匹配項

 trimChars:要刪除的字符數組

方法實現如下代碼:

        //判斷是否全是數字
        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;
        }

 用MD5加密,算法代碼實現如下:

        /// <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;
        }


生成批量密碼,和加密後的密碼如下圖:

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved