暴力破解算法——寻找密码(进制替换法)
来源:互联网 发布:永安医疗软件 编辑:程序博客网 时间:2024/05/20 03:07
暴力破解算法——寻找密码(进制替换法)
今天在看代码的时候发现的一种方法,我相信这种方法肯定是有人用过的,但是我也没有查到具体叫做什么方法,所以就自创了一个名字,不过这样子看起来我好像是一个不学无术的人,不过也确实如此,有空我再去查一下这个方法,有知道的可以在我下面评论一下,感谢!
- 讲一下这篇文章主要解决的一个问题
当我们知道密码的组成,但是不知道密码的具体排列组合顺序的时候,一般会采用两种方法,一种是根据字典去破解,这种我们暂且不谈,另一种方法则是对当前的密码集进行所有情况的遍历,上一篇文章我给出了一个递归遍历的方法,毋庸置疑,递归免不了保留现场,压栈,跳转,创建临时变量,出栈,返回等一系列操作,所以效率上肯定是比较差的。
今天我介绍一下一种新的方法,也许是别人用到烂大街的方法。我们知道,由0-1000,甚至更大的数肯定是不会重复的,基于这个特点,有了我这个方法。
假设,现在我们要对密码进行遍历,已知该密码由 4 位字符组成,字符集为 {a,b,c},与之对应的下标为 {0,1,2}现在已知就有3*3*3*3=81 种情况,也就是说,遍历的值为 0 - 80,那么我们就可以用程序生成数 n,n为0 - 80 的数,因为字符集有 3 个元素,那么就选择 3 进制。下面我们就要将 n 转为 3 进制的数,然后将其存储在一个数组里面,再通过数组去找我们对应的元素,看下面的演示你就明白了
0 --> 0000 --> aaaa1 --> 0001 --> aaab2 --> 0002 --> aaac3 --> 0010 --> aaba4 --> 0011 --> aabb5 --> 0012 --> aabc6 --> 0020 --> aaca7 --> 0021 --> aacb8 --> 0022 --> aacc9 --> 0100 --> abaa10 --> 0101 --> abab11 --> 0102 --> abac12 --> 0110 --> abba13 --> 0111 --> abbb14 --> 0112 --> abbc15 --> 0120 --> abca16 --> 0121 --> abcb17 --> 0122 --> abcc... ... ... ... ...... ... ... ... ...... ... ... ... ...80 --> 2222 --> cccc(2*3^3+2*3^2+2*3^1+2*3^0=80,完美)
可以看到,根据以上的组合,我们遍历了所有情况
其实,这种方法还有改进的空间,当 高位+1=进制数 时,必然要进位,所以,我们其实不用做进制转换,直接对当前的数组进行判断,加减即可,这样子的话效率肯定是更高的,但是,上面的算法是最好理解的。
阅读全文
0 0
- 暴力破解算法——寻找密码(进制替换法)
- 暴力破解算法——寻找密码(递归方法)
- 暴力破解密码算法-JS
- CUDA—使用GPU暴力破解密码
- 编程算法基础——暴力破解法
- (一)算法之暴力破解法
- 算法基础——1.1暴力破解法(鸡兔同笼、韩信点兵问题)
- 暴力破解wifi密码
- zip+密码暴力破解
- win7密码破解之“替换法”
- 【算法】最近点对问题(暴力破解法)
- 编程算法基础-暴力破解法
- 编程算法之暴力破解法
- 暴力破解password算法
- 暴力破解Oracle数据库密码
- 利用wireshake暴力破解密码
- hydra暴力破解ssh密码
- burpsuite暴力破解网站密码?
- ABBYY FineReader OCR图片文字识别软件安装应用
- 从1开始,连续输出50个素数
- 深度学习 | Why and How:神经网络中的权重初始化
- Unity之Socket[0]
- 译文 | 与TensorFlow的第一次接触(一)
- 暴力破解算法——寻找密码(进制替换法)
- python剑指offer 链表倒数第k个结点
- 爬虫实战:一个简易 Java 爬虫程序的实现
- 北京 | 深度学习与人工智能研修
- sublime text3的package control安装
- 关于提高MySQL数据库的性能,看这一篇就够了
- Vue2+VueRouter2+Webpack+Axios 构建项目(一)基础知识概述
- Python类定义和类继承详解
- spring cloud之利用zuul实现文件上传(十)