C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密

C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密

 2017/9/29 11:43:11  浅苍蓝  程序员俱乐部  我要评论(0)
  • 摘要:要求:密码必须包含数字和字母思路:1.列出数字和字符。组成字符串:chars2.利用randrom.Next(inti)返回一个小于所指定最大值的非负随机数。3.随机取不小于chars长度的随机数a,取字符串chars的第a位字符。4.循环8次,得到8位密码5.循环N次,批量得到密码。代码实现如下Main函数:staticvoidMain(string[]args)
  • 标签: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   class="sentence" data-guid="518d77c34feb6d7558e616b557172cfa" data-source="">从 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;
        }

生成批量密码,和加密后的密码如下图:

以上图片“图斗罗”提供

 

发表评论
用户名: 匿名