В заголовочном файле cstdio С++ есть замечательная функция tmpfile, которая предназначена для создания временного двоичного файла. Имя файла гарантированно отличается от любого другого существующего файла. Этим именем файла я и решил воспользоваться, чтобы генерировать достаточно «уникальные пароли».
И так сама программа, которая генерирует пароли длинной 18 символов.
#include <iostream>
using namespace std;
#define N 9
int main ()
{
// строка для хранения сгенерированного пароля
char buffer[L_tmpnam];
// переменная для хранения количества паролей
int num;
cout << ″Введите количество паролей. ″
<< ″По окончание ввода нажмите Enter\n″ << endl;
// запишем введенное значение в переменную num
cin >> num;
cout << endl;
for (int i = 0; i < num; i++) {
// генерация первой части пароля сохранение в buffer
tmpnam(buffer);
// запишем значение в переменную str
string str = buffer;
// генерация второй части пароля сохранение в buffer
tmpnam(buffer);
// запишем значение в переменную str1
string str1 = buffer;
// генерация третьей части пароля сохранение в buffer
tmpnam(buffer);
// запишем значение в переменную str2
string str2 = buffer;
// уберем первые 9 символов из первой части пароля
str.erase (0,N);
// уберем первые 9 символов из второй части пароля
str1.erase (0,N);
// уберем первые 9 символов из третьей части пароля
str2.erase (0,N);
// объединим все части пароля
cout << str+str1+str2 << endl;
}
return 0;
}
Демонстрация работы данной программы.
Генерируем 5 паролей.
Генерируем 20 паролей.
Pwgen нам больше не нужен. :-).
Данная программа не более чем шуточная демонстрация возможностей функции tmpfile.
(Программа запускалась в Code::Blocks IDE 16.01 на Linux Mint 19.0).