Мы очень часто пользуемся паролями, но не всегда задумываемся, каким должен быть надежный пароль. Особенно, если под паролем скрыта какая-либо конфиденциальная информация, очень важно, чтобы никто кроме меня не смог получить доступ к этой информации. Во первых, несколько правил сетевой безопасности:
- Пароль должен быть сложным для подбора его брутфорсом.
- Для всех веб-сервисов пароли должны быть разными.
- Никогда не сохраняйте свои пароли в браузере.
- Ответ на секретный вопрос должен знать только 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;
}
Софтина генерирует любое количество сложных паролей любой длины и записывает их в текстовый файл. Пользуйтесь на здоровье.
Комментарии к статье: 45
Возможность комментировать эту статью отключена автором. Возможно, во всем виновата её провокационная тематика или большое обилие флейма от предыдущих комментаторов.
Если у вас есть вопросы по содержанию статьи, рекомендуем вам обратиться за помощью на наш форум.