其实这个算法已经用PHP实现了,详细请看这篇文章:PHP自定义字典序任意长度排列算法
但是这篇文章访问量低的吓人(2年才100多)
今天我们就用C/C++来实现这个算法并更名为密码暴力破解算法(C/C++排列组合算法)
这个算法主要是进位思想,比如9 + 1 = 10,如果把 9看成z,+1比表示下一位,那么z的下一位就是aa(字典是26个字母a,b,c...x,y,z)
C++实现方法
引用库
#include <string>
#include <vector>
这里采用分文件编写的方法(可以合并到一个文件)
首先设计一个类
main.h
class StringCombination
{
private:
std::vector<std::string> stringsDict;
std::pair<std::string, int> term;
int dictLength;
ssize_t valueLength = -1;
public:
StringCombination(const std::vector<std::string> &strings, int length = -1) : stringsDict(strings), dictLength(strings.size()), valueLength(length)
{
term.first = stringsDict[0];
term.second = stringsDict[0].length();
}
std::string nextValue(std::string value);
};
然后就是函数主体
main.cpp
#include "main.h"
std::string StringCombination::nextValue(std::string value)
{
if (value.empty())
value = "";
int i = 0, dictOrder;
std::vector<std::pair<std::string, int>> nextValueCut;
std::string temp;
while (value.length() > i)
{
dictOrder = -1;
for (size_t n = 0; n < dictLength; n++)

本文介绍了如何使用C/C++实现一个进位思想的排列组合算法,用于密码暴力破解,包括C/C++代码示例和字典序处理。
最低0.47元/天 解锁文章
2795

被折叠的 条评论
为什么被折叠?



