Guest User

Password generator

a guest
Jun 16th, 2020
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.77 KB | None | 0 0
  1. #include <fstream>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <vector>
  5. #include <unordered_map>
  6. #include <iostream>
  7. #include <string.h>
  8.  
  9. using namespace std;
  10.  
  11. string Generate_Password(int char_number, bool add_special_char, bool add_upper_letters, bool add_lower_letters, bool add_number);
  12.  
  13. int main()
  14. {
  15. srand( time( NULL ) );
  16. cout << "__________________________________________________________\n" << endl;
  17. cout << " PASSWORD GENERATOR PROGRAM\n" << endl;
  18. cout << "__________________________________________________________\n" << endl;
  19.  
  20. bool mainloop_error(false);
  21. do {
  22. cout << "\n" << endl;
  23. cout << "--> Generate Random Password : Press G...\n" << endl;
  24. cout << "--> Show Password List : Press L...\n" << endl;
  25.  
  26. string encrypted_password;
  27. char user_input_sec_menu;
  28. char user_input_menu;
  29. cin >> user_input_menu;
  30. cout << "\n" << endl;
  31. if (user_input_menu == 'G')
  32. {
  33. int user_char_number;
  34. bool char_number_loop_error;
  35. do {
  36. cout << "Choose the number of character :\n" << endl;
  37. char_number_loop_error = false;
  38. user_char_number = 0;
  39. cin >> user_char_number;
  40.  
  41. if (cin.fail())
  42. {cout << "Wrong command !!\n" << endl;
  43. char_number_loop_error = true;
  44. cin.clear();
  45. cin.ignore(256,'\n');
  46. }
  47. else {char_number_loop_error = false;}
  48. }while(char_number_loop_error == true);
  49.  
  50. cout << "\n" << endl;
  51.  
  52. bool include_numbers;
  53. bool include_numbers_loop_error;
  54. do {
  55. cout << "Do you want your password to include numbers ? (y/n)\n" << endl;
  56. include_numbers_loop_error = false;
  57. char password_include_numbers;
  58. cin >> password_include_numbers;
  59.  
  60. cout << "\n" << endl;
  61.  
  62. if (password_include_numbers == 'y')
  63. {include_numbers = true;}
  64. else if (password_include_numbers == 'n')
  65. {include_numbers = false;}
  66. else {cout << "Wrong command !!\n" << endl;
  67. include_numbers_loop_error = true;}
  68. }while(include_numbers_loop_error == true);
  69.  
  70. cout << "\n" << endl;
  71.  
  72. bool include_upper_letters;
  73. bool include_upper_letters_loop_error;
  74. do {
  75. cout << "Do you want your password to include uppercase letters ? (y/n)\n" << endl;
  76. include_upper_letters_loop_error = false;
  77. char password_include_upper_letters;
  78. cin >> password_include_upper_letters;
  79.  
  80. cout << "\n" << endl;
  81.  
  82. if (password_include_upper_letters == 'y')
  83. {include_upper_letters = true;}
  84. else if (password_include_upper_letters == 'n')
  85. {include_upper_letters = false;}
  86. else {cout << "Wrong command !!\n" << endl;
  87. include_upper_letters_loop_error = true;}
  88. }while(include_upper_letters_loop_error == true);
  89.  
  90. cout << "\n" << endl;
  91.  
  92. bool include_lower_letters;
  93. bool include_lower_letters_loop_error;
  94. do {
  95. cout << "Do you want your password to include lowercase letters ? (y/n)\n" << endl;
  96. include_lower_letters_loop_error = false;
  97. char password_include_lower_letters;
  98. cin >> password_include_lower_letters;
  99.  
  100. cout << "\n" << endl;
  101.  
  102. if (password_include_lower_letters == 'y')
  103. {include_lower_letters = true;}
  104. else if (password_include_lower_letters == 'n')
  105. {include_lower_letters = false;}
  106. else {cout << "Wrong command !!\n" << endl;
  107. include_lower_letters_loop_error = true;}
  108. }while(include_lower_letters_loop_error == true);
  109.  
  110. cout << "\n" << endl;
  111.  
  112. bool include_special_char;
  113. bool include_special_char_loop_error;
  114. do {
  115. include_special_char_loop_error = false;
  116. cout << "Do you want your password to include special characters ? (y/n)\n" << endl;
  117.  
  118. char password_include_special_char;
  119. cin >> password_include_special_char;
  120.  
  121. cout << "\n" << endl;
  122.  
  123. if (password_include_special_char == 'y')
  124. {include_special_char = true;}
  125. else if (password_include_special_char == 'n')
  126. {include_special_char = false;}
  127. else {cout << "Wrong command !!\n" << endl;
  128. include_special_char_loop_error = true;}
  129. }while(include_special_char_loop_error == true);
  130.  
  131. cout << "\n" << endl;
  132.  
  133. string password;
  134.  
  135. password = Generate_Password(user_char_number, include_special_char, include_upper_letters, include_lower_letters, include_numbers);
  136.  
  137. cout << "Your password is : " <<password << endl;
  138.  
  139. cout << "\n" << endl;
  140.  
  141. bool continue_generate_new_password;
  142. do {
  143. continue_generate_new_password = false;
  144.  
  145. cout << "--> Generate a new password with the same settings : Press N...\n" << endl;
  146. cout << "--> Save your password : Press S...\n" << endl;
  147. cout << "--> Go back to Main menu : Press M...\n" << endl;
  148.  
  149. cin >> user_input_sec_menu;
  150. cout << "\n" << endl;
  151. if (user_input_sec_menu == 'N')
  152. {
  153. password = Generate_Password(user_char_number, include_special_char, include_upper_letters, include_lower_letters, include_numbers);
  154. cout << "Your password is : " << password << endl;
  155.  
  156. cout << "\n" << endl;
  157. continue_generate_new_password = true;
  158. }
  159.  
  160. if (user_input_sec_menu == 'S')
  161. {
  162. cout << "Give it a name (to be recognised when listed) :\n" << endl;
  163. string password_name;
  164. cin >> password_name;
  165. cout << "\n" << endl;
  166. ofstream save_password("Passwords.txt", ios::app);
  167. if(save_password) //On teste si tout est OK
  168. {
  169. save_password << password_name << " : " << password << "\n" << endl;
  170. cout << "Password saved !\n" << endl;
  171. }
  172. else
  173. {
  174. cout << "ERREUR: Impossible d'ouvrir le fichier." << endl;
  175. }
  176. mainloop_error = true;
  177. }
  178.  
  179. }while(continue_generate_new_password == true);
  180. if (user_input_sec_menu == 'M')
  181. {
  182. mainloop_error = true;
  183. }
  184. }
  185. else if (user_input_menu == 'L')
  186. {
  187. ifstream password_list_stream("Passwords.txt");
  188. string password_list;
  189. while (getline(password_list_stream, password_list)) {
  190. std::cout << password_list << "\n";
  191. }
  192. mainloop_error = true;
  193. }
  194. else {cout << "Wrong command !!\n" << endl;
  195. mainloop_error = true;}
  196. }while (mainloop_error == true);
  197.  
  198. system("pause");
  199. return 0;
  200. }
  201.  
  202. string Generate_Password(int char_number, bool add_special_char, bool add_upper_letters, bool add_lower_letters, bool add_number)
  203. {
  204. string user_password;
  205. char random_special_char;
  206. char random_numbers_char;
  207. char random_upper_letters_char;
  208. char random_lower_letters_char;
  209. char password_char;
  210. int password_size(0);
  211. ifstream char_list("PasswordChar.txt");
  212. for (int i = 0; i < char_number; i++)
  213. {
  214. vector<char> special_char_vector;
  215. vector<char> numbers_char_vector;
  216. vector<char> upper_letters_char_vector;
  217. vector<char> lower_letters_char_vector;
  218. special_char_vector.clear();
  219. numbers_char_vector.clear();
  220. upper_letters_char_vector.clear();
  221. lower_letters_char_vector.clear();
  222.  
  223. if (add_special_char == true)
  224. {
  225. char_list.seekg(0, ios::beg);
  226. vector<char> special_char_vector; //32 cases
  227. int e(0);
  228. while(e < 29)
  229. {
  230. char_list.get(password_char);
  231. special_char_vector.push_back(password_char);
  232. //cout << password_char << endl;
  233. e += 1;
  234. }
  235. int random_special_char_index = rand() % 29;
  236. random_special_char = special_char_vector[random_special_char_index];
  237. //cout << random_special_char << endl;
  238. }
  239. else {random_special_char = ' ';}
  240.  
  241. if (add_number == true)
  242. {
  243. char_list.seekg(55, ios::beg);
  244. vector<char> numbers_char_vector; //32 cases
  245. int e(0);
  246. while(e < 10)
  247. {
  248. char_list.get(password_char);
  249. numbers_char_vector.push_back(password_char);
  250. //cout << password_char << endl;
  251. e += 1;
  252. }
  253. int random_numbers_char_index = rand() % 10;
  254. random_numbers_char = numbers_char_vector[random_numbers_char_index];
  255. //cout << random_numbers_char << endl;
  256. }
  257. else {random_numbers_char = ' ';}
  258.  
  259. if (add_upper_letters == true)
  260. {
  261. char_list.seekg(29, ios::beg);
  262. vector<char> upper_letters_char_vector; //33 cases
  263. int e(0);
  264. while(e < 26)
  265. {
  266. char_list.get(password_char);
  267. upper_letters_char_vector.push_back(password_char);
  268. //cout << password_char << endl;
  269. e += 1;
  270. }
  271. int random_upper_letters_char_index = rand() % 26;
  272. random_upper_letters_char = upper_letters_char_vector[random_upper_letters_char_index];
  273. //cout << random_letters_char << endl;
  274. }
  275. else {random_upper_letters_char = ' ';}
  276.  
  277. if (add_lower_letters == true)
  278. {
  279. char_list.seekg(65, ios::beg);
  280. vector<char> upper_letters_char_vector; //33 cases
  281. int e(0);
  282. while(e < 26)
  283. {
  284. char_list.get(password_char);
  285. lower_letters_char_vector.push_back(password_char);
  286. //cout << password_char << endl;
  287. e += 1;
  288. }
  289. int random_lower_letters_char_index = rand() % 26;
  290. random_lower_letters_char = lower_letters_char_vector[random_lower_letters_char_index];
  291. //cout << random_letters_char << endl;
  292. }
  293. else {random_lower_letters_char = ' ';}
  294.  
  295. char possibilities_array[4] = {random_special_char, random_numbers_char, random_upper_letters_char, random_lower_letters_char};
  296. int possibilities_array_index = rand() % 4;
  297. user_password += possibilities_array[possibilities_array_index];
  298.  
  299. while (possibilities_array[possibilities_array_index] == ' ')
  300. {
  301. password_size = 0;
  302. password_size = user_password.size();
  303. user_password.erase(password_size-1, 1);
  304. possibilities_array_index = rand() % 4;
  305. user_password += possibilities_array[possibilities_array_index];
  306. }
  307. }
  308. return user_password;
  309. }
Add Comment
Please, Sign In to add comment