暴力破解password算法

本文详细阐述了一个用于生成和破解密码的算法实现过程,包括使用字符集合、递归表达式来生成所有可能的密码组合,并通过实例展示了如何在指定长度范围内生成密码。通过代码示例,深入探讨了密码生成的基本原理和实践应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static void Main(string[] args)
       {
           Console.WriteLine(DateTime.Now.Ticks);//开始时间

           int maxLength = 10; //设置可能最长的密码长度
           CrackPass(maxLength);

           Console.WriteLine(DateTime.Now.Ticks);//结束时间
           Console.Read();


       }
       //密码可能会包含的字符集合
       static char[] charSource = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',  
                                  'n',  'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
       static int sLength = charSource.Length; //字符集长度
//得到长度为len所有的密码组合,在字符集charSource中
//递归表达式:fn(n)=fn(n-1)*sLenght; 大致是这个意思吧 
       private static void Crack(char[] list, int len)
       {
           if (len == 0)
           {  //递归出口,list char[] 转换为字符串,并打印
              Console.WriteLine(ArrayToString(list));
           }
           else
           {
               for (int i = 0; i < sLength; i++)
               {
                   list[len - 1] = charSource[i];
                   Crack(list, len - 1);
               }
           }        
       }
       //list char[] 转换为字符串
       private static string ArrayToString(char[] list)
       {
           if (list == null||list.Length == 0)
               return string.Empty;
           StringBuilder buider = new StringBuilder(list.Length*2);
           for (int i = 0; i < list.Length; i++)
           {
               buider.Append(list[i]);
           }
           return buider.ToString();


       }
      //得到密码长度从 1到maxLength的所有不同长的密码集合
       public static void CrackPass(int maxLength)
       {
           for (int i = 0; i < maxLength; i++)
           { 
               char[] list =new char[i];
               Crack(list, i);
           }
       
       }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值