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; }
CTEST(one_time_pad_suite, empty_key) { char text[] = "Это текст"; char key[] = ""; char *crypt = vernam_crypt(text, key); ASSERT_NULL(crypt); }
CTEST(one_time_pad_suite, empty_text) { char text[] = ""; char key[] = "one-time pad"; char *crypt = vernam_crypt(text, key); ASSERT_NULL(crypt); }
CTEST(one_time_pad_suite, simple_test) { char text[] = "Hello, World!"; char key[] = "qT2-PK008!but"; char *crypt = vernam_crypt(text, key); char expected_crypt[] = "91^A?ggWSU"; ASSERT_STR(expected_crypt, crypt); }
CTEST(one_time_pad_suite, text_match_key) { char text[] = "I want to encrypt the text"; char key[] = "I want to encrypt the text"; char *crypt = vernam_crypt(text, key); char expected_crypt[] = "?????"; ASSERT_STR(expected_crypt, crypt); }
CTEST(one_time_pad_suite, cyrillic_text) { char text[21] = "Текст для шифрования"; char key[21] = "Вернам"; char *crypt = vernam_crypt(text, key); char expected_crypt[21] = "М#LёYvc87'U"; ASSERT_STR(expected_crypt, crypt); }
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); }