Что думаете об этом генераторе паролей на основе псевдослучайных чисел? Щас объясню свою идею. Смысл в том, что можно
генерировать пароль свой, не храня его нигде, зная лишь строку и зерно, поэтому используются псевдослучайные числа. Ну и да, можно не выводить все пароли в консоль, а только один, по строке. Это я так, для теста. Вот исходный код на C, пробовал на линуксе через gcc компилировать и открывать программу, где-то 10-100 млн паролей обрабатывает менее чем за минуту.
#include <stdio.h>
#include <stdlib.h>
int main(){
const unsigned int UPPER_BOUND = 126;
const unsigned int LOWER_BOUND = 33;
int seed;
unsigned int char_count;
unsigned int password_count;
// for (int i = 0; i !=256; i++) printf("%d. %c\n", i, (char)i); 33-126
printf("Enter a random number (seed) that will be used to generate a password:\n");
scanf("%d", &seed);
srand(seed);
printf("How many characters will your password be:\n");
scanf("%d", &char_count);
printf("How many passwords you need:\n");
scanf("%d", &password_count);
for(int i = 0; i < password_count; i++) {
for(int j = 0; j < char_count; j++) printf("%c", (char)rand() % (UPPER_BOUND - LOWER_BOUND + 1) + LOWER_BOUND);
printf("\n");
}
getchar();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(){
const unsigned int UPPER_BOUND = 126;
const unsigned int LOWER_BOUND = 33;
int seed;
unsigned int char_count;
unsigned int password_count;
// for (int i = 0; i !=256; i++) printf("%d. %c\n", i, (char)i); 33-126
printf("Enter a random number (seed) that will be used to generate a password:\n");
scanf("%d", &seed);
srand(seed);
printf("How many characters will your password be:\n");
scanf("%d", &char_count);
printf("How many passwords you need:\n");
scanf("%d", &password_count);
for(int i = 0; i < password_count; i++) {
for(int j = 0; j < char_count; j++) printf("%c", (char)rand() % (UPPER_BOUND - LOWER_BOUND + 1) + LOWER_BOUND);
printf("\n");
}
getchar();
return 0;
}
хотел вставить через блок кода, но сайт баганулся, дополнением оформил
Можно также хранить списки паролей. Например, текстовый файл в таком виде:
Discord
Google
Mail
И сделать фиксированный шаг, запомнив его. Например, у нас зерно "эталонное", то есть для 1. Discord это 15185129, а строка 1961723. Делаем +10 к зерну и -5 к строке, получаем 2. Google. Либо можно дописывать: 2. Google +54/-21; 3. Mail -351/-851 в самом файле;
А сам файл хранить в облаке где-то. Ну или в запороленном архиве 7zip с шифрованием AES-256, если вы прям параноик, в хорошо защищенном облаке.
Ну и вывод по строке:
#include <stdio.h>
#include <stdlib.h>
int main(){
const unsigned int UPPER_BOUND = 126;
const unsigned int LOWER_BOUND = 33;
int seed;
unsigned int char_count;
unsigned int password_count;
// for (int i = 0; i !=256; i++) printf("%d. %c\n", i, (char)i); 33-126
printf("Enter a random number (seed) that will be used to generate a password: ");
scanf("%d", &seed);
srand(seed);
printf("Count of characters: ");
scanf("%d", &char_count);
printf("Password number: ");
scanf("%d", &password_count);
for(int i = 0; i < password_count; i++) {
for(int j = 0; j < char_count; j++) rand() % (UPPER_BOUND - LOWER_BOUND + 1) + LOWER_BOUND;
}
for (int i = 0; i < char_count; i++) printf("%c", (char)rand() % (UPPER_BOUND - LOWER_BOUND + 1) + LOWER_BOUND);
printf("\n");
getchar();
return 0;
}

Пока никто не знал твой алгоритм, то идея норм. Я тоже генерирую пароли по определенному слову и использую свой алгоритм без всяких случайных чисел, но стойкости для меня хватает. Программу нигде не выкладывал, так что где-то это надежно.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned long djb2(unsigned char *str) {
unsigned long hash = 5381;
int c;
while (c = *str++) hash = ((hash << 5) + hash) + c;
return hash; }
int main() {
char str[100];
unsigned int seed;
printf("Строка, зерно: ");
scanf("%99s %u", str, &seed);
srand(djb2((unsigned char *)str) + seed);
for (int i = 0; i < 12; i++) putchar((rand() % 94) + 33);
puts(""); }
Кажется верхнеуровнево не отличается от хранения паролей в зашифрованном архиве.
Подобрать пароль к зашифрованному архиву == Подобрать зерно и строку для вашей программы
хня
Борисик Пчелинцев, открыт 37 минут назад
Вопрос-лидер
Что думаете об этом генераторе паролей на основе псевдослучайных чисел? Щас объясню свою идею. Смысл в том, что можно
генерировать пароль свой, не храня его нигде, зная лишь строку и зерно, поэтому используются псевдослучайные числа. Ну и да, можно не выводить все пароли в консоль, а только один, по строке. Это я так, для теста. Вот исходный код на C, пробовал на линуксе через gcc компилировать и открывать программу, где-то 10-100 млн паролей обрабатывает менее чем за минуту.
Дополнен 34 минуты назад
#include <stdio.h>
#include <stdlib.h>
int main(){
const unsigned int UPPER_BOUND = 126;
const unsigned int LOWER_BOUND = 33;
int seed;
unsigned int char_count;
unsigned int password_count;
// for (int i = 0; i !=256; i++) printf("%d. %c\n", i, (char)i); 33-126
printf("Enter a random number (seed) that will be used to generate a password:\n");
scanf("%d", &seed);
srand(seed);
printf("How many characters will your password be:\n");
scanf("%d", &char_count);
printf("How many passwords you need:\n");
scanf("%d", &password_count);
for(int i = 0; i < password_count; i++) {
for(int j = 0; j < char_count; j++) printf("%c", (char)rand() % (UPPER_BOUND - LOWER_BOUND + 1) + LOWER_BOUND);
printf("\n");
}
getchar();
return 0;
}
Дополнен 34 минуты назад
хотел вставить через блок кода, но сайт баганулся, дополнением оформил
Дополнен 28 минут назад
Можно также хранить списки паролей. Например, текстовый файл в таком виде:
Discord
Google
Mail
И сделать фиксированный шаг, запомнив его. Например, у нас зерно "эталонное", то есть для 1. Discord это 15185129, а строка 1961723. Делаем +10 к зерну и -5 к строке, получаем 2. Google. Либо можно дописывать: 2. Google +54/-21; 3. Mail -351/-851 в самом файле;
Дополнен 27 минут назад
А сам файл хранить в облаке где-то. Ну или в запороленном архиве 7zip с шифрованием AES-256, если вы прям параноик, в хорошо защищенном облаке.
Дополнен 18 минут назад
Ну и вывод по строке:
#include <stdio.h>
#include <stdlib.h>
int main(){
const unsigned int UPPER_BOUND = 126;
const unsigned int LOWER_BOUND = 33;
int seed;
unsigned int char_count;
unsigned int password_count;
// for (int i = 0; i !=256; i++) printf("%d. %c\n", i, (char)i); 33-126
printf("Enter a random number (seed) that will be used to generate a password: ");
scanf("%d", &seed);
srand(seed);
printf("Count of characters: ");
scanf("%d", &char_count);
printf("Password number: ");
scanf("%d", &passwor