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

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

Для начала, заведём вектор, с именем 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 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.