| 
				 } 
      cipher_idea(input,output,DK);  //解密过程与加密函数相同 
      for (y=0;y<x;y++) 
      { 
     if (noisy) if (count++%256==0) printf("."); 
     if (length-->0)  //  注意: 分两次写入的原因是有些字符可能是8位的,而密文一定是16位的 
        write_char_to_file(((char)(output[y]>>8)),out);// 写入解密得到的明文高8位 
     if (length-->0) 
        write_char_to_file(((char)(output[y]&255)),out); //写入低8位 
      } 
   } 
} 
//最终文件生成, 参数是文件名 
void swap_files_and_clean_up(char *file) 
{ 
   long fsize,count; 
   FILE *fp; 
   char temp[100]; 
  
   if (overwrite)  //如果要求覆盖文件 
   { 
      if ((fp=fopen(file,"r+b"))==NULL)  //失败 
      { 
     printf("\nError overwriting old file, security compromised.\n"); 
      } 
      else 
      { 
     fseek(fp,0l,SEEK_END);//定位到最后一个字符的位置 
     fsize=ftell(fp);  //取得文件长度 
     fseek(fp,0l,SEEK_SET); //文件开始位置 
     for (count=0;count<fsize;count++) 
        fputc('0',fp);  //用0填充文件 
     fclose(fp); 
      } 			
				 |