2011-12-21 15 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は異なるインデントにあり、2番目のペアは同じインデントで... – pmg

+2

ちょっとした注意: 'argc'をチェックし、十分な引数があることを確認して –

+0

'return 0;'は通常、オペレーティングシステムの成功を示すために使われます。 'return 1;'はおそらく失敗を示します。戻り値を確認することができます。 – pmg

答えて

11

あなたの括弧をチェックしてください:しばらくは

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

これは大変問題でした。ありがとうございました!私が持っていた他の質問はどうですか?このコードで私自身の暗号化アルゴリズムを書いてXORを置き換えることは可能でしょうか? – adohertyd

+0

はい、あなたのアルゴリズム 'c = youralgo(c、* key ++);' – pmg

+0

に 'c^= *(key ++);'を置き換えてください。本当にありがとう、本当にありがとうございます。このサイトから得られる大きな助け! – adohertyd

関連する問題