[C#] 10进制转62进制,实现穷举指定位数的所有密码组合(暴力破解)
因为我们这里要穷举的密码包括0-9,a-z,A-Z共62个字符,所以我们采用62进制来遍历。
首先,我们实现一个10进制转62进制的方法。
/// <summary> /// 遍历指定位数之间的所有组合 /// </summary> /// <param name="minLength">最短位数</param> /// <param name="maxLength">最长位数</param> public static void testPassword(int minLength, int maxLength) { for (int i = minLength; i <= maxLength; i++) { long maxNum = (long)Math.Pow(62, i); for (long j = 0; j < maxNum; j++) { Console.WriteLine(ConvertTo62(j, i)); } } }
调用:
testPassword(2, 3);
程序将会输出2位和3位密码的所有组合形式。(从:00-ZZZ)
根据这个思路,我们还可以写出更多形式的穷举算法。比如我们遍历的密码还包含小数点“.”,那么我们只需要把算法改成63进制即可。