读书人

[C#] 十进制转62进制实现穷举指定位

发布时间: 2012-11-09 10:18:48 作者: rapoo

[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进制即可。


读书人网 >C#

热点推荐