Пятница, 19.04.2024, 17:15
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1301
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Реализация шифрования Виженера на СИ

      Привиденныё код реализует шифрование методом Виженера текстового файла состоящего из английский букв. Все пробелы опускаются, т.к  если их оставить полученый шифротекст будет довольно просто взломать. Этот код так же легко переделать для работы с русским алфавитом и вообще всеми символами, что даст возможность шифровать так же и бинарные файлы, т.е файлы любого типа. После шифрования и закрытия фалов идет расшифровка и запись результата вотдельный файл(сделано для наглядности и проверки работоспособности). при надобности без проблем разделяется на 2 самостоятельные программы шифрования и расшифровки по методу Виженера.

#include <stdio.h>

int main(int argc, char *argv[]){
    FILE *f1;
    FILE *f2;
    char fname[100];
    char key[100];
    char c;
    int cur=0;
    f2=fopen("output.txt","w");
    printf("file name: ");
    scanf("%s",fname);
    f1=fopen(fname,"r");
    if (f1==NULL) {
        printf("file not found\n");
        return 0;
    }
    printf("key: ");
    scanf("%s",key);
   

    while (!feof(f1)){
        if (fread(&c,1,1,f1)){
            if ((c>=97)&&(c<=122)){
                if ( (c+key[cur]-97)<=122) c=c+key[cur]-97; else
                    c=key[cur]+c-123;
                fprintf(f2,"%c",c);   
                if (cur<strlen(key)-1) ++cur; else cur=0;

            }
           
        }
    }
   

    fclose(f1);
    fclose(f2);

   
    f1=fopen("output.txt","r");
    f2=fopen("output2.txt","w");
    cur=0;
    while (!feof(f1)){
        if (fread(&c,1,1,f1)){
            if ((c>=97)&&(c<=122)){
                if ( (c-key[cur]+97)>=97) c=c-key[cur]+97; else
                    c=c-key[cur]+123;
                fprintf(f2,"%c",c);   
                if (cur<strlen(key)-1) ++cur; else cur=0;
            }
        }
    }

    fclose(f1);
    fclose(f2);

    return 0;
}



Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---