Найти в Дзене

Генератор паролей на C++ и немного о сетевой безопасности

Мы очень часто пользуемся паролями, но не всегда задумываемся, каким должен быть надежный пароль.
Особенно, если под паролем скрыта какая-либо конфиденциальная информация, очень важно, чтобы никто кроме меня не смог получить доступ к этой информации. Во первых, несколько правил сетевой безопасности:
Пароль должен быть сложным для подбора его брутфорсом.
Для всех веб-сервисов пароли должны быть

Мы очень часто пользуемся паролями, но не всегда задумываемся, каким должен быть надежный пароль.

Особенно, если под паролем скрыта какая-либо конфиденциальная информация, очень важно, чтобы никто кроме меня не смог получить доступ к этой информации. Во первых, несколько правил сетевой безопасности:

  • Пароль должен быть сложным для подбора его брутфорсом.
  • Для всех веб-сервисов пароли должны быть разными.
  • Никогда не сохраняйте свои пароли в браузере.
  • Ответ на секретный вопрос должен знать только 1 человек, т.е. я сам.

Часто придумать сложный пароль для каждого веб-сервиса бывает проблематично, т.к. фантазия человека не безгранична. Поэтому, хороший способ — это генератор сложных паролей. Недавно у меня была необходимость и я написал такой генератор. Я специально выкладываю исходный код программы, т.к. я считаю, что софт должен быть только с открытыми исходниками. Также, вы не будете сомневаться в том, что после генерации пароля, он не будет отправлен в базу для брутфорса или на получение md5-хеша. В общем, издеваться над кодом можно настолько, насколько хватит фантазии. Собственно, сам исходник:

Листинг passgen.cpp

# include <iostream> # include <algorithm>
# include
<time.h>
#  include
<stdlib.h>
# include
<fstream>

using std::cout;
using std::cin;
using std::endl;

class PassGen {

public:
void displayMessage()
{
int passLenght;
int numOfPasswords;
char * filename = new char;

cout << "Введите длину пароля для генерации: ";
cin >> passLenght;
cout << "Введите количество паролей для генерации: ";
cin >> numOfPasswords;
cout << "Будет сгенерировано паролей: " << numOfPasswords << "." << endl;
cout << endl;
cout << "Введите имя файла для записи: ";
cin >> filename;

std::ofstream
outFile(filename);

for (int k = 0; k < numOfPasswords; k++) {
for (int i = 0; i < passLenght; ++i) {
numOfChars(passLenght);
passGenerator(passLenght);
outFile << password [i];
}
outFile << endl;
}
outFile.close();

cout << "Пароли успешно сгенерированы и записаны в файл " << filename << "" << endl;
}

void passGenerator(int passLenght)
{
password =
new char [passLenght];

for (int i = 0; i < numOfNumbers; ++i) {
password [i] =
char(rand() % 10 + 48);
}
for (int i = numOfNumbers; i < numOfNumbers + numOfBigChars; ++i) {
password [i] =
char(rand() % 26 + 65);
}
for (int i = numOfNumbers + numOfBigChars; i < passLenght; ++i) {
password [i] =
char(rand() % 26 + 97);
}
std::random_shuffle(password, password + passLenght);
}

void numOfChars(int passLenght)
{
numOfSmallChars = rand() % passLenght;
int charRandEnd = passLenght - numOfSmallChars;
numOfBigChars = rand() % charRandEnd;
numOfNumbers = passLenght - numOfSmallChars - numOfBigChars;
}

private:
int numOfSmallChars;
int numOfBigChars;
int numOfNumbers;
char * password;
};

int main()
{
srand(time(NULL));
PassGen * pass =
new PassGen;
pass->displayMessage();
return 0;
}

Софтина генерирует любое количество сложных паролей любой длины и записывает их в текстовый файл. Пользуйтесь на здоровье.