温故而知新,看了一个C语言利用指针写的穷举密码的函数。正好有几个自己写的简易工具里需要使用到,随写一个C#版本。

一个穷举密码的类    public class PasswordString
{

一个穷举密码的类        
private static readonly string _number = "0123456789";
一个穷举密码的类        
private static readonly string _uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
一个穷举密码的类        
private static readonly string _lowercase = "abcdefghijklmnopqrstuvwxyz";
一个穷举密码的类        
private static string _other;
一个穷举密码的类        
#endregion
一个穷举密码的类        
public static string Number
{
一个穷举密码的类            
get
{
一个穷举密码的类                
return _number;
一个穷举密码的类            }

一个穷举密码的类        }

一个穷举密码的类
一个穷举密码的类        
public static string Uppercase
{
一个穷举密码的类            
get
{
一个穷举密码的类                
return _uppercase;
一个穷举密码的类            }

一个穷举密码的类        }

一个穷举密码的类
一个穷举密码的类        
public static string Lowercase
{
一个穷举密码的类            
get
{
一个穷举密码的类                
return _lowercase;
一个穷举密码的类            }

一个穷举密码的类        }

一个穷举密码的类
一个穷举密码的类        
public static string Other
{
一个穷举密码的类            
get
{
一个穷举密码的类                
return _other;
一个穷举密码的类            }

一个穷举密码的类            
set
{
一个穷举密码的类                _other 
= Other;
一个穷举密码的类            }

一个穷举密码的类        }

一个穷举密码的类    }

一个穷举密码的类    public class EnumPassword
{

一个穷举密码的类        
private ulong _Counter = 0;
一个穷举密码的类        
private string _Source = PasswordString.Number + PasswordString.Lowercase + PasswordString.Uppercase;
一个穷举密码的类        
private string _Password = "";
一个穷举密码的类        
private ulong _Min = 3;
一个穷举密码的类        
private ulong _Max = 8;
一个穷举密码的类        
#endregion
一个穷举密码的类

一个穷举密码的类        
private string _GetPassword(ulong counter)
{
一个穷举密码的类            
char [] str = new char[this._Max];
一个穷举密码的类            
char [] src = _Source.ToCharArray();
一个穷举密码的类            
ulong n = 0;
一个穷举密码的类            
ulong len = (ulong)src.Length;
一个穷举密码的类            str[n] 
= src[counter % len];
一个穷举密码的类            
while(counter >= len)
{
一个穷举密码的类                counter 
/= (ulong)src.Length;
一个穷举密码的类                str[n 
+ 1= src[counter % len];
一个穷举密码的类                n
++;
一个穷举密码的类            }

一个穷举密码的类            
this._Password = new string(str).Substring(0, (int)(n + 1));
一个穷举密码的类            
return this._Password;
一个穷举密码的类        }

一个穷举密码的类        
#endregion
一个穷举密码的类        
public EnumPassword()
{
一个穷举密码的类            
this._Counter = (ulong)Math.Pow(this._Source.Length, this._Min - 1);
一个穷举密码的类        }

一个穷举密码的类        
public EnumPassword(ulong min, ulong max)
{
一个穷举密码的类            
if(min > max)
一个穷举密码的类                
throw new Exception("Min is smaller than max.");
一个穷举密码的类            
this._Min = min;
一个穷举密码的类            
this._Max = max;
一个穷举密码的类            
this._Counter = (ulong)Math.Pow(this._Source.Length, this._Min - 1);
一个穷举密码的类        }

一个穷举密码的类        
public string Password()
{
一个穷举密码的类            
return this._Password;
一个穷举密码的类        }

一个穷举密码的类        
public string Next()
{
一个穷举密码的类            
ulong counter;
一个穷举密码的类            
lock(this)
{
一个穷举密码的类                counter 
= this._Counter;
一个穷举密码的类                
this._Counter++;
一个穷举密码的类            }

一个穷举密码的类            
string pass = this._GetPassword(counter);
一个穷举密码的类            
return pass;
一个穷举密码的类        }

一个穷举密码的类
一个穷举密码的类        
public string Source
{
一个穷举密码的类            
get
{
一个穷举密码的类                
return this._Source;
一个穷举密码的类            }

一个穷举密码的类            
set
{
一个穷举密码的类                
this._Source = Source;
一个穷举密码的类            }

一个穷举密码的类        }
    
一个穷举密码的类    }

还有很多功能没有实现,不过那些都是简单玩意了。主要问题是效率不高,主要是string类型的使用实在是太XXX,等过几天,再优化优化~~~~大家有什么建议,帮我看看,提提~~

相关文章:

  • 2021-11-08
  • 2021-09-18
  • 2021-12-08
  • 2021-10-12
  • 2021-10-11
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-26
相关资源
相似解决方案