• 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:UserslenovoDesktoppws.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 + "
    ");
                }
                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;
            }


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

     版权声明:本文为博主原创文章,转载请注明出处。http://www.cnblogs.com/SweetMemory/p/6297138.html

  • 相关阅读:
    设计模式--抽象工厂(个人笔记)
    C#中Trim()、TrimStart()、TrimEnd()的用法
    C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
    枚举、字符串、值之间的转换
    C# 获取文件名、目录、后缀、无后缀文件名、扩展名、根目录等
    向服务器发送Post或Get请求(封装好的)
    未能加载文件或程序集“AspNetPager”或它的某一个依赖项。参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))
    Hibernate实现向数据库插入一条数据全过程(Study By Example)
    es6 模块化
    css3 属性认识
  • 原文地址:https://www.cnblogs.com/SweetMemory/p/6297138.html
Copyright © 2020-2023  润新知