Однажды у меня в голове всплыла идея: почему бы не написать простой генератор паролей? Причин на то много: все пароли, придуманные человеком (многие любят ставить qwerty и 123123123), уязвими к бруту. Мы же сделаем такой генератор, который никогда не смогут подобрать. Мы будем использовать rand(), vector (можно конечно без него, но я не люблю использовать массивы), string.
Для начала, заведём вектор, с именем letters, затем объявим пустую функцию init() (её надо будет вызывать самой первой, в main()).
Всё хорошо, продолжаем. И тут нам надо заполнить letters цифрами и буквами.
Отлично, letters мы заполнили.
Теперь думаем как нам сгенерировать число в пределах 0..max. Ответ найдём сразу:
Идём дальше. Нам же надо из чего-то генерировать пароль. Мы будем просто добавлять к результату letters[тут_случайный_индекс]
Итак, последняя функция, genPass.
Готово. Просто добавляем сливки. Пишем GUI и т.д. и т.п. Самого главного мы добились — у нас есть генератор случайных паролей.
Для начала, заведём вектор, с именем letters, затем объявим пустую функцию init() (её надо будет вызывать самой первой, в main()).
#include <cstdlib><br/>
#include <vector><br/>
#include <string><br/>
using namespace std;<br/>
<br/>
vector<string> letters;<br/>
<br/>
void init()<br/>
{<br/>
}<br/>
<br/>
int main()<br/>
{<br/>
init();<br/>
}
Всё хорошо, продолжаем. И тут нам надо заполнить letters цифрами и буквами.
#include <cstdlib><br/>
#include <vector><br/>
#include <string><br/>
using namespace std;<br/>
<br/>
vector<string> letters;<br/>
<br/>
void init()<br/>
{<br/>
letters.push_back("q");<br/>
letters.push_back("w");<br/>
letters.push_back("e");<br/>
letters.push_back("r");<br/>
letters.push_back("t");<br/>
letters.push_back("y");<br/>
letters.push_back("u");<br/>
letters.push_back("i");<br/>
letters.push_back("o");<br/>
letters.push_back("p");<br/>
letters.push_back("a");<br/>
letters.push_back("s");<br/>
letters.push_back("d");<br/>
letters.push_back("f");<br/>
letters.push_back("g");<br/>
letters.push_back("h");<br/>
letters.push_back("j");<br/>
letters.push_back("k");<br/>
letters.push_back("l");<br/>
letters.push_back("z");<br/>
letters.push_back("x");<br/>
letters.push_back("c");<br/>
letters.push_back("v");<br/>
letters.push_back("b");<br/>
letters.push_back("n");<br/>
letters.push_back("m");<br/>
letters.push_back("0");<br/>
letters.push_back("1");<br/>
letters.push_back("2");<br/>
letters.push_back("3");<br/>
letters.push_back("4");<br/>
letters.push_back("5");<br/>
letters.push_back("6");<br/>
letters.push_back("7");<br/>
letters.push_back("8");<br/>
letters.push_back("9");<br/>
}<br/>
<br/>
int main()<br/>
{<br/>
init();<br/>
}
Отлично, letters мы заполнили.
Теперь думаем как нам сгенерировать число в пределах 0..max. Ответ найдём сразу:
int genRnd(int max)<br/>
{<br/>
return rand() % max;<br/>
}
Идём дальше. Нам же надо из чего-то генерировать пароль. Мы будем просто добавлять к результату letters[тут_случайный_индекс]
Итак, последняя функция, genPass.
int genPass(int length)<br/>
{<br/>
string res = "";<br/>
for (int i = 0; i < length; ++i)<br/>
{<br/>
res += letters[genRnd(letters.size())];<br/>
}<br/>
return res;<br/>
}
Готово. Просто добавляем сливки. Пишем GUI и т.д. и т.п. Самого главного мы добились — у нас есть генератор случайных паролей.