Untitled

                Never    
C
       
#include "pch.h"
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <time.h>
#include <iostream>
#include <signal.h>

//
char nameTxtFile[100];
bool readKeyFromFile(char* str);

void append(char* s, char c);
bool readKey(char* str);
void DrukujNapis();
char CharToString(char* str);

int main(int argc, char* argv[])
{	
	unsigned long liczbaKluczyDoWygenerowania;
	unsigned long liczbaKluczyPoprzedzajacychPoprawny;
	liczbaKluczyPoprzedzajacychPoprawny = 0;

	unsigned long i = 0;
	int j = 0;
	char keyBuf[8];
	char keyBin[57];

	int size, my_rank;

	unsigned long x;
	//72 057 594 037 927 936
	//unsigned long n = 10;

	int c, k;

	clock_t start, end;
	double cpu_time_used;

	char s[100] = "0";
	unsigned long myFirst;
	unsigned long myLast;

	MPI_Init(&argc, &argv);
	MPI_Comm_size(MPI_COMM_WORLD, &size);
	MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);



	if (my_rank == 0) {

		DrukujNapis();

		printf("%s", "\nWprowadz nazwę pliku tekstowego zawierającego klucz>\n");
		scanf("%s", nameTxtFile);

		//key.txt
		bool czyWczytanoKlucz;
		czyWczytanoKlucz = readKeyFromFile(keyBuf);

		//key to bin
		size_t len = strlen(keyBuf);
		char binary[57];
		keyBin[0] = '\0';
		for (i = 0; i < len; ++i) {
			char ch = keyBuf[i];
			for (j = 7; j >= 0; --j) {
				if (ch & (1 << j)) {
					strcat(keyBin, "1");
				}
				else {
					strcat(keyBin, "0");
				}
			}
		}


		if (czyWczytanoKlucz == true) {			
			printf("%s", "\nWczytany klucz z pliku\n");
			printf("%s%s", "\nKlucz w formie tekstowej: ", keyBuf);
			printf("%s%s\n\n", "\nKlucz w formie binarnej : ", keyBin);

			printf("%s", "Podaj liczbę kluczy do wygenerowania: ");
			scanf("%d", &liczbaKluczyDoWygenerowania);

			myFirst = my_rank * liczbaKluczyDoWygenerowania / size;
			myLast = (my_rank + 1) * liczbaKluczyDoWygenerowania / size;
			start = MPI_Wtime();
			for (x = myFirst; x < myLast; x++)
			{
				s[0] = '\0';
				char wartosc[100];
				for (c = 7; c >= 0; c--)
				{
					k = x >> c;

					if (k & 1)
						append(s, '1');
					else
						append(s, '0');
				}

				const char* myString = s;
				const char* padding = "00000000";

				char genKey[200];
				strcpy(genKey, padding);

				strcat(genKey, myString);

				//printf("%s%s\n","kb ",keyBin);
				//printf("%s%s\n","gk ",genKey);

				liczbaKluczyPoprzedzajacychPoprawny++;

				if (strcmp(genKey, keyBin) == 0) {
					printf("\nKlucz został znaleziony\n");
					end = MPI_Wtime();
					cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
					printf("%s%f", "Czas: ", cpu_time_used);
					printf("%s%d", "\nLiczba kluczy poprzedzająca prawidłowy klucz: ", liczbaKluczyPoprzedzajacychPoprawny);
					MPI_Finalize();
				}
			}
		}
		else {
			printf("%s", "Nie udało się wczytać klucza z pliku");
			MPI_Finalize();
		}
	}
	MPI_Finalize();

}

void append(char* s, char c)
{
	int len = strlen(s);
	s[len] = c;
	s[len + 1] = '\0';
}

bool readKey(char* str)
{
	FILE *fp;
	fp = fopen("test.txt", "r");

	if (fp == NULL) {
		return false;
	}
	else
	{
		fgets(str, 8, fp);
		fclose(fp);
	}
	return true;
}

bool readKeyFromFile(char* str)
{
	char extension[5] = ".txt";
	char name_with_extension[100];

	strcpy(name_with_extension, nameTxtFile);
	strcat(name_with_extension, extension);

	FILE *fp;
	fp = fopen(name_with_extension, "r");

	if (fp == NULL) {
		return false;
	}
	else
	{
		fgets(str, 8, fp);
		fclose(fp);
	}
	return true;
}

void DrukujNapis()
{
	printf("###############################################################################\n");
	printf("#                                                                             #\n");
	printf("#                                                                             #\n");
	printf("#                       ######    ########    #####                           #\n");
	printf("#                       ##   ##   ##         ##   ##                          #\n");
	printf("#                       ##    ##  ##         #                                #\n");
	printf("#                       ##    ##  ##          ##                              #\n");
	printf("#                       ##    ##  ######       ##                             #\n");
	printf("#                       ##    ##  ##             ##                           #\n");
	printf("#                       ##    ##  ##               #                          #\n");
	printf("#                       ##   ##   ##         ##   ##                          #\n");
	printf("#                       #####     ########    #####                           #\n");
	printf("#                                                                             #\n");
	printf("#                                                                             #\n");
	printf("#    #####   #######   #########     #####    ##    ##   ########   #######   #\n");
	printf("#   ##    #  ##    ##  ##     ##    ##    #   ##   ##    ##         ##    ##  #\n");
	printf("#  ##        ##    ##  ##     ##   ##         ##  ##     ##         ##    ##  #\n");
	printf("#  ##        ##    ##  ##     ##   ##         ## #       ##         ##    ##  #\n");
	printf("#  ##        #######   #########   ##         ###        ######     #######   #\n");
	printf("#  ##        ###       ##     ##   ##         ## #       ##         ###       #\n");
	printf("#  ##        ## ##     ##     ##   ##         ##  ##     ##         ## ##     #\n");
	printf("#   ##    #  ##   ##   ##     ##    ##    #   ##   ##    ##         ##   ##   #\n");
	printf("#    #####   ##    ##  ##     ##     #####    ##    ##   ########   ##    ##  #\n");
	printf("#                                                                             #\n");
	printf("#                                                                             #\n");
	printf("###############################################################################\n");
}

Raw Text