Beispiel #1
0
int main()
{
	int i, inp = 0;
	FILE *f1, *f2, *fkey;
	char key[100], fname[100], file_key[100];;
	char *crypt;

	f2 = fopen("output.txt","w");
	printf("Input file name: ");
	scanf("%s", fname);

	f1 = fopen(fname,"r");
	if (f1 == NULL) {
		printf("file not found\n");
	 	return 0;
	}

	inp = input();
	printf("\nINP = %d\n", inp);
	char *text = reading(f1);
	switch (inp)
	{
		case 1:
			printf("Ключ (слово до 99 букв): ");
			scanf("%s",key);
			vij(key, f1, f2);
			break;
	//	case 2:
	//		break;
		case 3:
			i = vernam_input(file_key);
			fkey = fopen(file_key, "r+");
			char *k = reading(fkey);
			if (i == 1) {
				k = realloc(k, strlen(text) * sizeof(char));
				crypt = vernam_crypt(text, k);
				output(k, fkey);
			}
			else if (i == 2)
				crypt = vernam_decrypt(text, k);
			else {
				printf("Неправильный ввод.\n");
				exit(EXIT_FAILURE);
			}
			if (crypt == NULL) {
				printf("Ошибка. Длина ключа не соответствует длине текста.\n");
				exit(EXIT_FAILURE);
			}
		break;
	//	case 4:
		//	break;
		default:
			printf( "Неправильный ввод.\n" );
	}
	output(crypt, f2);
	printf("Ваш результат находится в файле output.txt \n");
	fclose(f1);
	free(text);
	return 0;
}
Beispiel #2
0
CTEST(vernam_decrypt_suite, disparity_length)
{
	char crypt[] = "&NLMOPXl@Ghi54?2_{";
	char key[] = "one-time pad";
	
	char *text = vernam_decrypt(crypt, key);
	
	ASSERT_NULL(text);
}
Beispiel #3
0
CTEST(vernam_decrypt_suite, empty_key)
{
	char crypt[] = "91^A?ggWSU";
	char key[] = "";

	char *text = vernam_decrypt(crypt, key);

	ASSERT_NULL(text);
}
Beispiel #4
0
CTEST(vernam_decrypt_suite, empty_text)
{
	char crypt[] = "";
	char key[] = "empty text";
	
	char *text = vernam_decrypt(crypt, key);
	
	char expected_text[] = "";
	
	ASSERT_STR(expected_text, text);
}
Beispiel #5
0
CTEST(vernam_decrypt_suite, text_was_match_key)
{
	char crypt[] = "?????";
	char key[] = "Hv`mssndmbqxossgdsdws";
	
	char *text = vernam_decrypt(crypt, key);
	
	char expected_text[] = "I want to encrypt the text";
	
	ASSERT_STR(expected_text, text);
}
Beispiel #6
0
CTEST(vernam_decrypt_suite, decrypt_test)
{
	char crypt[] = "&NLMOPXl@Ghi54?2_{";
	char key[] = "one-time pad;e(|5H]]L(iW'";
	
	char *text = vernam_decrypt(crypt, key);
	
	char expected_text[] = "I want to decipher this text";
	
	ASSERT_STR(expected_text, text);
}
Beispiel #7
0
void start_clicked(GtkWidget *widget, gpointer data) 
{    
    FILE *f1, *f2, *fkey;
    char *key = gtk_entry_get_text (GTK_ENTRY (tbKey));
    gtk_label_set_text(GTK_LABEL(lbInf), "");
    f1 = fopen(gtk_entry_get_text (GTK_ENTRY (tbFilePath)),"r");
    char *crypt;
    if (f1 == NULL)	{
        gtk_label_set_text(GTK_LABEL(lbInf), "File not found!");
        return;
    }
	
    char *text = reading(f1);
	
    if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(alg1))) {	
        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cr1)))
            crypt = vijinera_encrypt(key, text);
        else 
            if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cr2)))
                crypt = vijinera_decrypt(key, text); 
            else
                gtk_label_set_text(GTK_LABEL(lbInf), "Arguments error!");
    }
	
    else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(alg2))) {    		

            if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cr1)))
                crypt = cezar_crypt(atoi(key), text);
    		
            else 
                if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cr2)))
                    crypt = cezar_decrypt(atoi(key), text); 

            else
                gtk_label_set_text(GTK_LABEL(lbInf), "Arguments error!");
    }
	
    else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(alg3))) {

            fkey = fopen(key, "r+");
            char *k = reading(fkey);
    		
            if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cr1))) {
                k = realloc(k, strlen(text) * sizeof(char));
                crypt = vernam_crypt(text, k);
                output(k, fkey);
            }

            else 
                if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cr2))) {
                    crypt = vernam_decrypt(text, k);
                } else {
                    gtk_label_set_text(GTK_LABEL(lbInf), "Arguments error!");
                    exit(EXIT_FAILURE);
                }
			
            if (crypt == NULL) {
                //printf("Ошибка. Длина ключа не соответствует длине текста.\n");
                gtk_label_set_text(GTK_LABEL(lbInf), "Key error!");
                exit(EXIT_FAILURE);
            }
        } else {
            gtk_label_set_text(GTK_LABEL(lbInf), "Arguments error!");
            return;
        }

//If it was encrypt: save result in "output.enc.txt"		
    if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cr1))) {
        f2 = fopen("output.enc.txt","w");
        output(crypt, f2);
        gtk_label_set_text(GTK_LABEL(lbInf), "Result in file 'output.enc.txt'!");
    }
//If it was decrypt: save result in "output.dec.txt"		
    else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cr2))) {
            f2 = fopen("output.dec.txt","w");
            output(crypt, f2);
            gtk_label_set_text(GTK_LABEL(lbInf), "Result in file 'output.dec.txt'!");
    }

    fclose(f1);
    free(text);
}