C/C++暴力破解算法

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

其实这个算法已经用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++)
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

STHUDY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值