Search
Write a publication
Pull to refresh

Пишем простой генератор паролей

Однажды у меня в голове всплыла идея: почему бы не написать простой генератор паролей? Причин на то много: все пароли, придуманные человеком (многие любят ставить qwerty и 123123123), уязвими к бруту. Мы же сделаем такой генератор, который никогда не смогут подобрать. Мы будем использовать rand(), vector (можно конечно без него, но я не люблю использовать массивы), string.
Для начала, заведём вектор, с именем letters, затем объявим пустую функцию init() (её надо будет вызывать самой первой, в main()).

#include #include #include using namespace std;

vector letters;

void init()
{
}

int main()
{
init();
}



Всё хорошо, продолжаем. И тут нам надо заполнить letters цифрами и буквами.
#include #include #include using namespace std;

vector letters;

void init()
{
letters.push_back("q");
letters.push_back("w");
letters.push_back("e");
letters.push_back("r");
letters.push_back("t");
letters.push_back("y");
letters.push_back("u");
letters.push_back("i");
letters.push_back("o");
letters.push_back("p");
letters.push_back("a");
letters.push_back("s");
letters.push_back("d");
letters.push_back("f");
letters.push_back("g");
letters.push_back("h");
letters.push_back("j");
letters.push_back("k");
letters.push_back("l");
letters.push_back("z");
letters.push_back("x");
letters.push_back("c");
letters.push_back("v");
letters.push_back("b");
letters.push_back("n");
letters.push_back("m");
letters.push_back("0");
letters.push_back("1");
letters.push_back("2");
letters.push_back("3");
letters.push_back("4");
letters.push_back("5");
letters.push_back("6");
letters.push_back("7");
letters.push_back("8");
letters.push_back("9");
}

int main()
{
init();
}


Отлично, letters мы заполнили.
Теперь думаем как нам сгенерировать число в пределах 0..max. Ответ найдём сразу:

int genRnd(int max)
{
return rand() % max;
}


Идём дальше. Нам же надо из чего-то генерировать пароль. Мы будем просто добавлять к результату letters[тут_случайный_индекс]
Итак, последняя функция, genPass.

int genPass(int length)
{
string res = "";
for (int i = 0; i < length; ++i)
{
res += letters[genRnd(letters.size())];
}
return res;
}


Готово. Просто добавляем сливки. Пишем GUI и т.д. и т.п. Самого главного мы добились — у нас есть генератор случайных паролей.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.