2011-12-21 49 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 2011-12-21 15:58:15

+2

只是旁註:最好檢查'argc'並確保您有足夠的參數來處理 – 2011-12-21 15:59:39

+0

'return 0;'通常用於指示操作系統的成功; '返回1;'可能表示失敗。您可能想要查看您的返回值。 – pmg 2011-12-21 16:00:40

回答

11

檢查括號:在同時應該

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

邦上就是這個問題謝謝!我的另一個問題呢?我可以編寫自己的加密算法,並在此代碼中替換XOR嗎? – adohertyd 2011-12-21 16:05:58

+0

是的,用你的算法替換你的代碼行'c^= *(key ++);',例如:'c = youralgo(c,* key ++);' – pmg 2011-12-21 16:07:28

+0

非常感謝,非常感謝pmg,從這個網站有很大的幫助! – adohertyd 2011-12-21 16:08:24