fork download
  1. #include <iostream>
  2. #include <fstream>
  3. #include <random>
  4. #include <string>
  5. #include <vector>
  6. #include <chrono>
  7.  
  8. std::string generate_email(std::mt19937& gen) {
  9. const std::vector<std::string> domains = {"gmail.com", "yahoo.com", "hotmail.com"};
  10. const std::string chars = "abcdefghijklmnopqrstuvwxyz0123456789";
  11.  
  12. std::uniform_int_distribution<> length_dist(5, 15);
  13. std::uniform_int_distribution<> char_dist(0, chars.size() - 1);
  14. std::uniform_int_distribution<> domain_dist(0, domains.size() - 1);
  15.  
  16. int length = length_dist(gen);
  17. std::string username;
  18. for (int i = 0; i < length; ++i) {
  19. username += chars[char_dist(gen)];
  20. }
  21.  
  22. return username + "@" + domains[domain_dist(gen)];
  23. }
  24.  
  25. std::string generate_password(std::mt19937& gen) {
  26. const std::string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*";
  27. std::uniform_int_distribution<> length_dist(8, 16);
  28. std::uniform_int_distribution<> char_dist(0, chars.size() - 1);
  29.  
  30. int length = length_dist(gen);
  31. std::string password;
  32. for (int i = 0; i < length; ++i) {
  33. password += chars[char_dist(gen)];
  34. }
  35. return password;
  36. }
  37.  
  38. int main() {
  39. std::random_device rd;
  40. std::mt19937 gen(rd());
  41.  
  42. int count;
  43. std::cout << "Сколько комбинаций? ";
  44. std::cin >> count;
  45.  
  46. std::string filename;
  47. std::cout << "Имя файла: ";
  48. std::cin >> filename;
  49.  
  50. auto start = std::chrono::high_resolution_clock::now();
  51.  
  52. std::ofstream file(filename);
  53. for (int i = 0; i < count; ++i) {
  54. std::string email = generate_email(gen);
  55. std::string password = generate_password(gen);
  56. file << email << ":" << password << "\n";
  57.  
  58. if ((i + 1) % 100000 == 0) {
  59. std::cout << "Сгенерировано: " << (i + 1) << std::endl;
  60. }
  61. }
  62. file.close();
  63.  
  64. auto end = std::chrono::high_resolution_clock::now();
  65. auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
  66.  
  67. std::cout << "Готово! " << count << " комбинаций за " << duration.count() << " мс" << std::endl;
  68.  
  69. return 0;
  70. }
Success #stdin #stdout 0s 5304KB
stdin
/*  Berechnung des Hamming-Abstandes zwischen zwei 128-Bit Werten in 	*/
/*	einer Textdatei. 													*/
/*  Die Werte müssen auf einer separaten Zeile gespeichert sein			*/
/* 																		*/
/*	Erstellt: 17.5.2010													*/
/*  Autor: Thomas Scheffler												*/

#include <stdio.h>
#include <stdlib.h>

#define ARRAY_SIZE 32

unsigned Hamdist(unsigned x, unsigned y)
{
  unsigned dist = 0, val = x ^ y;
 
  // Count the number of set bits
  while(val)
  {
    ++dist; 
    val &= val - 1;
  }
 
  return dist;
}



int main (void)
{
	char hex;
	int i;
	int a[ARRAY_SIZE];
	int b[ARRAY_SIZE];
	int hamDist = 0;
	FILE* fp;
	
	//Arrays mit 0 initialisieren
	for (i = 0; i < ARRAY_SIZE; ++i)
	{
  		a[i] = 0;
  		b[i] = 0;
	}

	
	fp = fopen("hex.txt","r");
	if (fp == NULL) 
	{
		printf("Die Datei hex.txt wurde nicht gefunden!");
		exit(EXIT_FAILURE);
	}

	i=0;
	printf("1.Zeile einlesen.\n");

 	while((hex=fgetc(fp))!='\n' && hex != EOF)
    {
        a[i]=strtol(&hex,0,16);
		i++;
    }
	i=0;
	printf("2.Zeile einlesen.\n");

 	while((hex=fgetc(fp))!='\n' && hex != EOF)
    {
    	b[i]=strtol(&hex,0,16);
        i++;
    }
	fclose(fp);

	printf("Hamming-Abweichung pro Nibble:\n");
	for (i = 0; i < ARRAY_SIZE; ++i)
	{
		printf ("%i\t%i\t%i\n",a[i],b[i],Hamdist(a[i],b[i]));
		hamDist += Hamdist(a[i],b[i]);
	}
	printf ("\nHamming-Abweichung der Hash-Werte:%d\n",hamDist);
}

stdout
Сколько комбинаций? Имя файла: Готово! 0 комбинаций за 0 мс