Пишем простой генератор паролей
Однажды у меня в голове всплыла идея: почему бы не написать простой генератор паролей? Причин на то много: все пароли, придуманные человеком (многие любят ставить qwerty и 123123123), уязвими к бруту. Мы же сделаем такой генератор, который никогда не смогут подобрать. Мы будем использовать rand(), vector (можно конечно без него, но я не люблю использовать массивы), string.
Для начала, заведём вектор, с именем letters, затем объявим пустую функцию init() (её надо будет вызывать самой первой, в main()).
Всё хорошо, продолжаем. И тут нам надо заполнить letters цифрами и буквами.
Отлично, letters мы заполнили.
Теперь думаем как нам сгенерировать число в пределах 0..max. Ответ найдём сразу:
Идём дальше. Нам же надо из чего-то генерировать пароль. Мы будем просто добавлять к результату letters[тут_случайный_индекс]
Итак, последняя функция, genPass.
Готово. Просто добавляем сливки. Пишем GUI и т.д. и т.п. Самого главного мы добились — у нас есть генератор случайных паролей.
Для начала, заведём вектор, с именем letters, затем объявим пустую функцию init() (её надо будет вызывать самой первой, в main()).
#include <cstdlib>
#include <vector>
#include <string>
using namespace std;
vector<string> letters;
void init()
{
}
int main()
{
init();
}
Всё хорошо, продолжаем. И тут нам надо заполнить letters цифрами и буквами.
#include <cstdlib>
#include <vector>
#include <string>
using namespace std;
vector<string> 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 и т.д. и т.п. Самого главного мы добились — у нас есть генератор случайных паролей.
0 комментариев