2011-12-21 3 views
2

Я создаю очень базовую программу шифрования с помощью XOR для шифрования пользовательского файла и дешифрования его снова. Что происходит, однако, когда я шифрую, я получаю длинную строку из тех же 6 букв, и когда я пытаюсь ее расшифровать, это не работает. Может ли кто-нибудь обнаружить проблему? Кроме того, я хочу заменить XOR базовым методом шифрования, но сохранить тот же код, кроме ключа. Это будет возможно? Благодаря!Очень простая программа шифрования

#include <stdio.h> 

int main(int argc, char*argv[]) 
{ 
FILE *fp1, *fp2; 
char* key; 
int c; 

key = argv[1]; 

    if(*key != '\0') 
    { 
    fp1 = fopen(argv[2],"rb"); 
     if(fp1 != NULL) 
     { 
      fp2 = fopen(argv[3],"wb"); 
      if (fp2 != NULL) 
      { 
      while((c=getc(fp1)!=EOF)) 
      { 
       if(!*key)key = argv[1]; 
       c ^=*(key++); 

       putc(c, fp2); 
      } 
      fclose(fp2); 
      } 
     fclose(fp1); 
     } 
    } 
return 1; 
} 
+0

Ваш отступов может быть улучшена; например: первый fopen/fclose находятся в разных углублениях, вторая пара в том же отступе ... – pmg

+2

Просто примечание: может быть неплохо проверить 'argc' и убедиться, что у вас достаточно аргументов для работы на –

+0

'return 0;' обычно используется для указания успеха в операционной системе; 'return 1;' скорее всего указывает на сбой. Вы можете просмотреть свое возвращаемое значение. – pmg

ответ

11

Проверьте скобку: это время должно быть

while((c=getc(fp1))!=EOF) 
+0

Удар по этой проблеме был благодарен! А как насчет другого вопроса? Можно ли мне написать собственный алгоритм шифрования и заменить XOR в этом коде? – adohertyd

+0

Да, замените вашу строку 'c^= * (key ++);' вашим алгоритмом, например: 'c = youralgo (c, * key ++);' – pmg

+0

Спасибо, что очень понравилось, и даже всем остальным. Отличная помощь от этого сайта! – adohertyd

Смежные вопросы