2023年7月31日发(作者:)

暴⼒破解算法——寻找密码(递归⽅法)暴⼒破解算法——寻找密码(递归⽅法)本⽂采⽤暴⼒破解算法的基本思想:

假设密码有0,1,2三个数组组成,密码长度为2,那么,密码的组成形式如下图所⽰

算法步骤算法会递归到最后⼀层判断⽣成的字符串是否⼀致如果⼀致,找到密码,返回1,否则返回0“⽗函数”判断“⼦函数”返回的值,如果为0,则继续往下寻找;如为1,则返回1,以表⽰找到对于算法的效率暂时没有去过多的去研究,如有改进的地⽅,欢迎指出⼀起探讨#include "iostream"#include "vector"#include "string"using namespace std;int findPwd(int deep, string parent);/*密码组成,有数字,⼩写字母,⼤写字母组成*/static char charSource[] = { '0', '1', '2','3','4','5','6','7','8','9', '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','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'};/*密码*/string password = "000A0";int main(){ /*密码长度*/ static int pswLength = 5; string pwd = ""; for (int j=0; j < sizeof(charSource); j++) { if (findPwd(pswLength, pwd + charSource[j])) { break; } } getchar(); return 0;}/*递归寻找密码*/int findPwd(int deep, string parent){ /*递归直到最后⼀层*/ if (deep == 1) { /*判断是否与密码相同,相同返回1,否则返回0*/ if (parent == password) { cout << "I had find the password: " << parent; return 1; } else return 0; } else { for (int j = 0; j < sizeof(charSource); j++) { /*递归并判断⼦树返回值,如若返回1,则函数结束,如返回0,继续往下寻找*/ if (findPwd(deep - 1, parent + charSource[j])) { return 1; } } } return 0;}

2023年7月31日发(作者:)

暴⼒破解算法——寻找密码(递归⽅法)暴⼒破解算法——寻找密码(递归⽅法)本⽂采⽤暴⼒破解算法的基本思想:

假设密码有0,1,2三个数组组成,密码长度为2,那么,密码的组成形式如下图所⽰

算法步骤算法会递归到最后⼀层判断⽣成的字符串是否⼀致如果⼀致,找到密码,返回1,否则返回0“⽗函数”判断“⼦函数”返回的值,如果为0,则继续往下寻找;如为1,则返回1,以表⽰找到对于算法的效率暂时没有去过多的去研究,如有改进的地⽅,欢迎指出⼀起探讨#include "iostream"#include "vector"#include "string"using namespace std;int findPwd(int deep, string parent);/*密码组成,有数字,⼩写字母,⼤写字母组成*/static char charSource[] = { '0', '1', '2','3','4','5','6','7','8','9', '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','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'};/*密码*/string password = "000A0";int main(){ /*密码长度*/ static int pswLength = 5; string pwd = ""; for (int j=0; j < sizeof(charSource); j++) { if (findPwd(pswLength, pwd + charSource[j])) { break; } } getchar(); return 0;}/*递归寻找密码*/int findPwd(int deep, string parent){ /*递归直到最后⼀层*/ if (deep == 1) { /*判断是否与密码相同,相同返回1,否则返回0*/ if (parent == password) { cout << "I had find the password: " << parent; return 1; } else return 0; } else { for (int j = 0; j < sizeof(charSource); j++) { /*递归并判断⼦树返回值,如若返回1,则函数结束,如返回0,继续往下寻找*/ if (findPwd(deep - 1, parent + charSource[j])) { return 1; } } } return 0;}