暴力破解算法,基本实现
2013-09-23 12:15
357 查看
using System; using System.Collections.Generic; using System.Text; namespace 暴力算法 { class Program { static void Main(string[] args) { int maxLength = 5; //设置可能最长的密码长度 Password.CrackPass(maxLength); } } class Password { //密码可能会包含的字符集合 //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 char[] charSource = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; static int sLength = charSource.Length; //字符集长度 //得到密码长度从 1到maxLength的所有不同长的密码集合 public static void CrackPass(int maxLength) { for (int i = 1; i <= maxLength; i++) { char[] list = new char[i]; Crack(list, i); } } //得到长度为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 ""; StringBuilder buider = new StringBuilder(list.Length * 2); for (int i = 0; i < list.Length; i++) { buider.Append(list[i]); } return buider.ToString(); } } }
相关文章推荐
- 暴力破解算法,基本实现
- 密码分析学策略之带字典的暴力破解的几个思考与算法实现
- 各种基本算法实现小结(五)—— 排序算法
- 数据结构编程笔记十四:第六章 树和二叉树 二叉树基本操作及四种遍历算法的实现
- 算法学习-暴力破解!枚举法(穷举法)
- KNN-算法基本实现
- python实现多线程暴力破解登陆路由器功能代码分享
- 基本算法个人PHP 实现(三)
- 堆排序(基本思想以及算法实现)
- 实现顺序队列各种基本运算的算法
- 图的基本算法实现(邻接矩阵与邻接表两种方法)
- C/C++:各种基本算法实现小结(四)—— 图及其遍历
- 实现将句子按单词为基本单位翻转的算法
- 各种基本算法实现小结(四)—— 图及其遍历
- 算法总结笔记之一——线性表(1)基本实现【C++语言】
- 数字图像处理基本算法实现(1)--section3.2基本灰度变换
- 字典树的数据结构及基本算法的实现
- 普林斯顿公开课 算法4-1:优先级队列API和基本实现
- 图像基本处理算法的简单实现(一)
- 用C++模板实现线性表的链式存储的基本算法(数据结构C++版 北京科海)