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

45 комментариев

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

  • Пароль должен быть сложным для подбора его брутфорсом.
  • Для всех веб-сервисов пароли должны быть разными.
  • Никогда не сохраняйте свои пароли в браузере.
  • Ответ на секретный вопрос должен знать только 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;
}

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

Генератор паролей на C.

Комментарии к статье: 45

Подождите, загружаются комментарии...

Возможность комментировать эту статью отключена автором. Возможно, во всем виновата её провокационная тематика или большое обилие флейма от предыдущих комментаторов.

Если у вас есть вопросы по содержанию статьи, рекомендуем вам обратиться за помощью на наш форум.